字符串valueOf vs与空字符串连接 [英] String valueOf vs concatenation with empty string
本文介绍了字符串valueOf vs与空字符串连接的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在从事Java代码优化工作。我不清楚 String.valueOf
或 +
符号之间的区别:
I am working in Java code optimization. I'm unclear about the difference between String.valueOf
or the +""
sign:
int intVar = 1;
String strVar = intVar + "";
String strVar = String.valueOf(intVar);
第2行和第3行有什么区别?
What is the difference between line 2 and 3?
推荐答案
public void foo(){
int intVar = 5;
String strVar = intVar+"";
}
此方法使用StringBuilder创建结果字符串
This approach uses StringBuilder to create resultant String
public void foo();
Code:
0: iconst_5
1: istore_1
2: new #2; //class java/lang/StringBuilder
5: dup
6: invokespecial #3; //Method java/lang/StringBuilder."<init>":()V
9: iload_1
10: invokevirtual #4; //Method java/lang/StringBuilder.append:(I)Ljava/lan
g/StringBuilder;
13: ldc #5; //String
15: invokevirtual #6; //Method java/lang/StringBuilder.append:(Ljava/lang/
String;)Ljava/lang/StringBuilder;
18: invokevirtual #7; //Method java/lang/StringBuilder.toString:()Ljava/la
ng/String;
21: astore_2
22: return
public void bar(){
int intVar = 5;
String strVar = String.valueOf(intVar);
}
这种方法只调用 String <的静态方法/ code>获取int的String版本
This approach invokes simply a static method of String
to get the String version of int
public void bar();
Code:
0: iconst_5
1: istore_1
2: iload_1
3: invokestatic #8; //Method java/lang/String.valueOf:(I)Ljava/lang/Stri
ng;
6: astore_2
7: return
反过来调用 Integer.toString()
which in turn calls Integer.toString()
这篇关于字符串valueOf vs与空字符串连接的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文