java - 为什么我应该使用 Integer.toString() 而不是只打印 Integer?

标签 java integer tostring

我正在学习 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/

相关文章:

string - Java 中的 Integer.toString 究竟是如何工作的?

Java Exception toString() inclusive 原因

c++ - 如何有效地检测 4 个整数变量的对称性?

java - Apache POI读取excel单元格的公式值

java - 如何设置 jackson 为假时忽略 boolean 属性?

java - Android camera2 镜头本征校准

c - 在C中如何验证输入值只是正数?

php - 当值中有逗号时,有没有办法检查整数?

c++ - to_string 不是 std 的成员,g++ (mingw)

java - Java属性文件中等号和冒号的区别