是否使用int +""将Java int转换为Strings?

Joh*_* L. 4 java string int

所以我们的计算机科学老师教我们如何通过这样做将ints 转换成s String:

int i=0;
String s = i+"";
Run Code Online (Sandbox Code Playgroud)

我想他是以这种方式教给我们的,因为这是相对基础的计算机科学(高​​中班,请注意),但我想知道这是否在某种程度上"糟糕"与以下相比:

int i=0;
String s = Integer.toString(i);
Run Code Online (Sandbox Code Playgroud)

它的成本更高吗?穷人的习惯?提前致谢.

Viv*_*sse 9

理论上

指示

String s = i + "";
Run Code Online (Sandbox Code Playgroud)

执行以下操作:i通过调用转换为String Integer.toString(i),并将此字符串连接到空字符串.这会导致创建三个String对象和一个串联.

指示

String s = Integer.toString(i);
Run Code Online (Sandbox Code Playgroud)

进行转换,只进行转换.

在实践中

大多数JIT编译器都能够优化第一个语句到第二个语句.如果甚至在此之前完成此优化(由javac编译器,在将Java源代码编译为字节码时),我也不会感到惊讶


MeB*_*Guy 8

i+""
Run Code Online (Sandbox Code Playgroud)

相当于

new StringBuilder().append(i).append("").toString();
Run Code Online (Sandbox Code Playgroud)

所以是的,效率较低,但除非你在循环中这样做,否则你可能不会注意到它.

[编辑:来自StriplingWarrior的评论 - 谢谢]

  • 实际上它相当于`new StringBuilder().append(i).append("").toString();`否则你只会获得一个带有长度为i的后备数组的空字符串 (4认同)
  • +1:那就是说,我认为很多人会争辩说,从语义角度来看,"Integer.toString(i)`better"描述了"你试图将整数转换为字符串的想法".`i +""`说"我想在这个整数后附加一个空字符串." (3认同)