我正在学习 Java 教程,它让我做类似的事情:
int k = 5;
System.out.println("The number is " + Integer.toString(k));
就像我一直在做的一项很好的运动一样,但我不禁想知道,为什么要使用那种方法呢?似乎需要大量额外的输入才能获得与以下相同的功能:
int k = 5;
System.out.println("The number is " + k);
对非字符串数据类型使用 toString()
方法是否有充分的理由?在我的具体示例中,是否有任何不能自动转换为字符串的 int
值?
最佳答案
这是您可以采用的众多“安全编程”实践之一,可以提高清晰度并防止您或您的代码的 future 维护者可能引入的细微错误。举个例子:
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
关于java - 为什么我应该使用 Integer.toString() 而不是只打印 Integer?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14126792/