这是许多“安全规划”的实践,你可以采用,以提高透明度,防止您或您的代码的未来的维护者可能引入细微的错误之一。看看下面的例子:
private static void printMessage(int k) {
System.out.println("number" + '=' + k);
}
输出:number=5
现在假设你想最后打印第一数和文字。我做的是交换的第一项和最后一项的字符串连接:
private static void printMessage2(int k) {
System.out.println(k + '=' + "number");
}
输出:66number
糟糕!将int值=
添加到k
而不是连接在一起。一种解决方案是使=
成为String
。另一个解决方案是显式转换int
为String
:
private static void printMessage2Safe(int k) {
System.out.println(Integer.toString(k) + '=' + "number");
}
输出:5=number
“哦,但我从来没有这样做,反正,”你说。 “任何正确的想法都会让=
成为其他字符串的一部分。”但是如果你正在实现一个基本的计算器应用程序的一部分,并且你想输出表达式及其结果呢?如果你真的想要小心,我想你会用StringBuilder.append()
连接表达式的各个部分。但是,如果不是,那么我希望你不要写下面第一个实现display
方法。
public class Calculator {
public static void main(String[] args) {
display(2, '+', 3, 5);
displaySafe(2, '+', 3, 5);
}
public static void display(int num1, char operator, int num2, int result) {
System.out.println(num1 + operator + num2 + '=' + result);
}
public static void displaySafe(int num1, char operator, int num2, int result) {
System.out.println(Integer.toString(num1) + operator + Integer.toString(num2) + "=" + result);
}
}
输出:
114
2+3=5
来源
2013-01-02 18:59:32
rob
还有就是两者之间没有显著差异。本教程可能想强调'toString'被称为“隐藏”,但是,对于日常编程,它只是额外的混乱。 –
我早些时候已经发布了一个答案,但是想要指出,对于偶然的读者来说,有些实际情况下你必须使用Integer.toString(int)和/或其他安全措施, '操作员。如果您不小心,使用'+'运算符进行字符串串联可能会产生意想不到的结果。 – rob