String s1 = "He"+"llo";// 这代码jvm会在编译时使它变成 String s1 = "Hello"; 所以第一段代码都是常量池的Hello,结果为true
String s3 = s1 + s2;//这代码实际是调用了StringBuffer,其操作相当于StringBuffer sb = new StringBuffer(); sb.append(s1); sb.append(s2); String s3 = sb; 这里new了一个对象,与常量池中的不是同一个地址的 所以第二段代码s3==s4是false |