java之String中==测试

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是基本类型,没有地址)

 

posted @ 2020-10-08 16:21  程序杰杰  阅读(168)  评论(0编辑  收藏  举报