1 字符串相加时如果含有字符串变量,则先在堆中开空间,再拼接,本质是new了StringBuilder对象进行append操作,拼接后调用toString()返回String对象。
2 字符串相加时不含字符串变量,是先加,然后在常量池找,如果有就直接返回,否则,就在常量池中创建一个字符串常量,不会用到StringBuilder。
String a1 = "a";
String b1 = "b";
String c1 = "ab";
System.out.println(c1 == a1+b1);//false
System.out.println(c1 == "a" + "b");//true