直接上代码—
字符串的拼接
public class Test {
public static void main(String args[]) {
//字符串的拼接
String str0 = "abc";
String str1 = "abc";
String str2="a"+"b";
String str3=new String ("abc");
String b=str2+"c";
System.out.println(str0==str1);
System.out.println(str1==str3);
System.out.println(str0==b);
System.out.println(b);
}
}
我们编译一下生成class’文件,然后反编译看结果—
这几年java优化的还不错吧,避免产生不必要的垃圾.
再来,我们通过JVM拉看一下代码是怎么运行的,在控制台输入 javac 将java文件编译,然后输入javap -c Test.class
new 关键字产生的String 对象
new 关键字产生的String 对象 实际上是开了两块空间—一个在堆中,一个在堆中的方法区,见上图.
有变量参与的字符串拼接
有变量参与的字符串拼接,在编译器不会进行优化,见上图反编译的文件截图,
时间匆忙,如有看不懂之出,还请私信我哦