public static void main(String[] args) { String s1 = new String("zs"); String s2 = new String("zs"); System.out.println(s1 == s2);//false String s3 = "zs"; String s4 = "zs"; System.out.println(s3 == s4);//true System.out.println(s3 == s1);//false String s5 = "zszs"; String s6 = s3+s4;//相当于new String(s3+s4) System.out.println(s5 == s6);//false final String s7 = "zs"; final String s8 = "zs"; String s9 = s7+s8;//s7与s8都是常量池中,他们组合也是在常量池 System.out.println(s5 == s9);//true final String s10 = s3+s4;//new String(s3+s4); System.out.println(s5 == s10);//false }
对于Integer,装箱使用valueOf(),内部设置[-128,127]使用缓存,不在这个范围内则new一个对象,因此
Integer a1=127;与Integer a2=127;的==相同
而 Integer a1=128;与Integer a2=128;的==不同
对于Integer与int比较自动拆箱,也就是说比较的是数值!(因为int是基本类型,没有地址)