所以我们的计算机科学老师教我们如何通过这样做将int
s 转换成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)
它的成本更高吗?穷人的习惯?提前致谢.
指示
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源代码编译为字节码时),我也不会感到惊讶
i+""
Run Code Online (Sandbox Code Playgroud)
相当于
new StringBuilder().append(i).append("").toString();
Run Code Online (Sandbox Code Playgroud)
所以是的,效率较低,但除非你在循环中这样做,否则你可能不会注意到它.
[编辑:来自StriplingWarrior的评论 - 谢谢]