因此,我们的计算机科学老师教我们如何通过这样做将int
转换为String
:
int i=0;
String s = i+"";
我猜他以这种方式教给我们,因为这是相对基础的计算机科学(高中班,请注意),但我想知道这与以下相比是否有些“糟糕”:
int i=0;
String s = Integer.toString(i);
成本更高吗?穷人的习惯?提前谢谢。
答案 0 :(得分:9)
指令
String s = i + "";
执行以下操作:通过调用i
将Integer.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);
它看起来更正式......