String.valueof;和String 是= ""+11;的区别
发布网友
发布时间:2022-04-26 19:45
我来回答
共1个回答
热心网友
时间:2022-04-23 02:39
关于字符串的+操作,单纯的String s ="" +11;编译器会看做常量""和常量11的拼接操作,常量计算最快;
String.valueOf会调用方法,速度上会稍慢于常量+操作;
另外,如果是这样:
String str = "";
String s = str+11;
就不是常量+操作了,会通过SringBuilder(JDK1.6还是1.5版本开始用StringBuilder替换StringBuffer来实现字符串+)的append操作来拼接。
耗时上看,常量+操作 最快,String.valueOf次之,字符串对象+操作最慢。
可以通过javap -c 看看具体操作步骤,也可以通过测试代码直观比较耗时:
Java code
public static void main(String[] args) {
long t = System.currentTimeMillis();
for (int i = 0; i < 1000000; i++) {
String s0 = String.valueOf(11);
}
System.out.println("耗时" + (System.currentTimeMillis() - t));
t = System.currentTimeMillis();
for (int i = 0; i < 1000000; i++) {
String s = "" + 11;
}
System.out.println("耗时" + (System.currentTimeMillis() - t));
String str = "";
t = System.currentTimeMillis();
for (int i = 0; i < 1000000; i++) {
String s = str + 11;
}
System.out.println("耗时" + (System.currentTimeMillis() - t));
}