Java 比较 ==,equals(),contentEquals() 的不同


1. 三种表达式的分析

		char[] chs = {'a', 'b', 'c'};
        String s1 = new String(chs);
        String s2 = new String(chs);
        String s3 = "abc";
        String s4 = "abc";
        StringBuilder s5 = new StringBuilder("abc");
        StringBuilder s6 = new StringBuilder("abc");

        //"==" 比较基本类型内容是否相同,或引用类型地址是否相同
        System.out.println(s1 == s2);//false
        System.out.println(s1 == s3);//false
        System.out.println(s3 == s4);//true
        //System.out.println(s1 == s5);//编译出错,不可比
        System.out.println(s5 == s6);//false,StringBuilder创建对象时也会在内存中开辟一个新的地址
        System.out.println("--------");

        //"equals()" 比较基本类型内容是否相同,或引用类型的内容和类型是否相同
        System.out.println(s1.equals(s2));//true
        System.out.println(s1.equals(s3));//true
        System.out.println(s3.equals(s4));//true
        System.out.println(s1.equals(s5));//false,StringBuilder与String不同类
        System.out.println("--------");

        //"contentEquals()" 不能比较基本类型,比较引用类型的内容是否相同,类型可以不同
        System.out.println(s1.contentEquals(s3));//true
        System.out.println(s1.contentEquals(s5));//true

2. 应用

发布了59 篇原创文章 · 获赞 60 · 访问量 1609

猜你喜欢

转载自blog.csdn.net/Regino/article/details/104489842
今日推荐