美文网首页
java面试==、equals方法相关

java面试==、equals方法相关

作者: pr0metheus | 来源:发表于2018-03-25 17:26 被阅读0次

    笔试题目一:==与equals方法的区别?

    答案:== 比较的是值,而对于equals方法如果被比较的对象没有覆盖equals方法的话那么比较的还是内存地址,如果覆写了equals方法那么我们才能说比较的是对象的内容。 例如String就覆写了equals方法比较的是字符串中的内容而我们自定义的类如果没有去覆写equals方法的话那么还是会从Object对象中继承equals方法,那么只会比较对象的内存地址。

    代码如下:

    public class EqualsTest {
        public static void main(String[] args) {
            String str = new String("abc");
            String str2 = new String("abc");
            System.out.println(str == str2);
            System.out.println(str.equals(str2));
        }
    }
    

    结果大家都知道:false、true

    再看下面一段代码

    public class EqualsTest {
        public static void main(String[] args) {
            Object obj = new Object();
            Object obj2 = new Object();
            System.out.println(obj == obj2);
            System.out.println(obj.equals(obj2));
        }
    }
    

    结果是:false、false

    查看Object的源代码:

        public boolean equals(Object obj) {
        return (this == obj);
        }
    

    所以对于没有覆盖equals的方法的类,用它的对象去进行equals比较的时候还是会采用对象内存地址的比较。

    知识点:在自定义类的时候如果该类需要进行相等性比较的话,那么就要覆写equals的方法

    相关文章

      网友评论

          本文标题:java面试==、equals方法相关

          本文链接:https://www.haomeiwen.com/subject/iufkcftx.html