我们知道创建一个字符串有2种方法:
1. String str = “abc”;
2. String str1 = new String(“abc”);
3. String str2 = “abc” + 字符串引用
第一种是在常量池中创建并返回引用
第二种是调用了String的构造方法并返回引用
第三种是调用了StringBuilder的方法拼接
下面我们通过反编译来了解吧~
如何操作?cmd下:
javac classname.java
javap -verbose classname
或者
javap -c className //这个简洁一些
具体可以使用javap --help
查看
先上代码1
String str1 = "abc";
String str2 = "bc" + "d";
String str3 = "abc";
让我们反编译一波~
ta-da~
ldc:从常量池中加载指定项的引用到栈。
astore_:将引用赋值给第n个局部变量
让我们解读下该结果: