以前看String的时候还真没有注意到,还是容易混淆的
String s1 = "m";
String s2 = "n";
String s3 = s1 + s2;
String s4 = s1 + s2;
System.out.println(s3 == s4);
final String s1 = "m";
final String s2 = "n";
String s3 = s1 + s2;
String s4 = s1 + s2;
System.out.println(s3 == s4);
结果:false,true
——一般情况下因为字符串的相加操作是动态的,会每次都重新生成一个新的字符串,所以他们不等. 但如果被相加的2个字符串是final的,则编译器将自动优化成 String s1 = "m"; String s2 = "n"; String s3 = "mn"; String s4 = "mn"; System.out.println(s3 == s4);