這是許多「安全規劃」的實踐,你可以採用,以提高透明度,防止您或您的代碼的未來的維護者可能引入細微的錯誤之一。看看下面的例子:
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