String不同拼接操作的对比
@Test
public void test3(){
String s1="javaEE";
String s2="hadoop";
String s3="javaEEhadoop";
String s4="javaEE"+"hadoop";
String s5=s1+"hadoop"; //有变量名参与,都不是在常量池了
String s6="javaEE"+s2; //有变量名参与,都不是在常量池了
String s7=s1+s2; //有变量名参与,都不是在常量池了
String s8=s5.intern();//拼接的结果调用intern()方法,返回值就在常量池
System.out.println(s3==s4);//true 字面量的连接,常量池中还是一样的,所以地址一样
System.out.println(s3==s5);//false //有变量名参与,都不是在常量池了
System.out.println(s3==s6);//false //有变量名参与,都不是在常量池了
System.out.println(s3==s7);//false //有变量名参与,都不是在常量池了
System.out.println(s5==s6);//false //有变量名参与,都不是在常量池了
System.out.println(s5==s7);//false //有变量名参与,都不是在常量池了
System.out.println(s6==s7);//false //有变量名参与,都不是在常量池了
System.out.println(s3==s8);//拼接的结果调用intern()方法,返回值就在常量池
}