我应该在不需要时将整数解析为 Java 中的字符串吗?

Should I parse an integer to string in Java, when not necessary?

我想将一个整数附加到一个字符串。 这样做有区别吗:

String str = "Number: " + myInt;

String str = "Number: " + Integer.toString(myInt);

换句话说,我是否应该在不需要时使用 Integer.toString() 方法?

编辑: 我不是好奇 "How to convert an integer to string",而是 "if I am required to use a certain method, to convert".

没有区别。编译器 (Oracle JVM 1.8) 将两个片段转换为

(new StringBuilder()).append("Number: ").append(myInt).toString();

就我个人而言,我不会使用 Integer.toString(),因为它会增加代码的噪音,而且不会提供清晰度和可读性。

编辑

原回答有误,说明会有细微差别(看历史回答!)

澄清 Augusto 的回答:您可以 运行 一个简单的基准测试。

public static void main(String[] args) {
    // TODO Auto-generated method stub
    System.out.println("Race Started"); 
    int []noArr = new int[100];
    for(int i=0;i<100;i++)
        noArr[i] = i+1;

    String str = "";
    long startedTime = System.nanoTime();
    for(int j=0;j<100;j++)
        str = str + noArr[j];

    long runningTime = System.nanoTime() - startedTime;
    System.out.println("Concatenation String + int took : "+runningTime);

    startedTime = System.nanoTime();
    String str2 = "";
    for(int h=0;h<100;h++)
        str2 = str2 + Integer.toString(noArr[h]);
    runningTime = System.nanoTime() - startedTime;
    System.out.println("Concatenation String with Wrapper obj took : "+runningTime);

    startedTime = System.nanoTime();
    StringBuilder sb = new StringBuilder("");
    for(int k=0;k<100;k++)
        sb.append(k);

    runningTime = System.nanoTime() - startedTime;
    System.out.println("StringBuilder took : "+runningTime);

}

摘要{以纳秒为单位的时间}

比赛开始(这些是粗略的值;但您可以看到巨大的差异)

  • 连接字符串 + int 花费:250555
  • 使用 Wrapper obj 的连接字符串:485413
  • StringBuilder 占用:98411