String s1="sss";
String s2="aaa";
String s3=s1+s2;
String s4="sss"+"aaa";app
问题一优化
System.out.println(s4=="sssaaa");//falsecode
问题二字符串
System.out.println(s3=="sssaaa");//true编译器
有一个东西叫作常量折叠,是一种编译器优化技术。编译
对于问题(一)
都是字符串字面量相加,都是编译期常量,都会被编译器进行常量折叠。class
String s3 = new StringBuffer(a).append(b).toString();
这里toString()会生成新的String变量,显然用 == 运算符比较是会返回 false。变量