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

时间:2011-09-29 23:11:15

标签: java string int

因此,我们的计算机科学老师教我们如何通过这样做将int转换为String

int i=0;
String s = i+"";

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

int i=0;
String s = Integer.toString(i);

成本更高吗?穷人的习惯?提前谢谢。

4 个答案:

答案 0 :(得分:9)

理论上

指令

String s = i + "";

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

指令

String s = Integer.toString(i);

进行转化,只进行转化。

在实践中

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

答案 1 :(得分:8)

i+""

相当于

new StringBuilder().append(i).append("").toString();

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

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

答案 2 :(得分:4)

这种技术有效,但它依赖于Java中字符串连接的神奇之处(这是涉及运算符重载的少数几个领域之一),并且可能会让一些人感到困惑。

我发现以下技术更加明确:

String.valueOf(123); // => "123"
Integer.toString(123); // => "123"

正如其他人所提到的,它会产生更简洁的字节码,因为它避免了新StringBuilder的隐式构造以及随附的方法调用。

答案 3 :(得分:0)

使用该方法将编译,因为您的老师使用了该方法,您可能希望在课堂上使用该方法,但为了使其更干净,您可能希望使用以下代码。

int i=0;
String s = Integer.toString(s);

它看起来更正式......