码迷,mamicode.com
首页 > 其他好文 > 详细

==和equals()的区别

时间:2021-03-16 11:42:06      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:art   eof   判断   equals   not   coder   public   this   tps   

==和equals()的区别

一、==

==作比较,如果是值类型,则是比较值是否相等;如果是引用类型的话,则是判断两个对象的内存地址是否相同。

注:对几个基本数据类型来说,是作为常量在方法区中的常量池里面以HashSet策略存储起来的。在常量池中,一个常量对应一个地址,因此不管是多少个变量的值相同(int a=1,b=1),它们的地址是指向同一个的(a和b的地址相同)

int a=1;
int b=1;
System.out.println(a==b);           //a与b的地址相同,值相同

二、equals

equals用于引用类型对象之间的比较。equals()比较的不一定是对象的内容,有两种情况:

1.没有重写equals(),这时比较的还是对象的内存地址

//这是Object类中的equals()
public boolean equals(Object obj) {
    return (this == obj);
}

2.重写了equals(),这时就要看具体的业务场景

//这是String类中的equals()
public boolean equals(Object anObject) {
        if (this == anObject) {               //判断是不是同一个对象
            return true;
        }
        if (anObject instanceof String) {     //比较两个对象内容是否相同
            String anotherString = (String)anObject;
            int n = value.length;
            if (n == anotherString.value.length) {
                char v1[] = value;
                char v2[] = anotherString.value;
                int i = 0;
                while (n-- != 0) {
                    if (v1[i] != v2[i])
                        return false;
                    i++;
                }
                return true;
            }
        }
        return false;
}

//这是Integer类中的equals()
public boolean equals(Object obj) {
        if (obj instanceof Integer) {
            return value == ((Integer)obj).intValue();
        }
        return false;
}

这篇文章参考了CSDN的CoderLC的文章

网址:https://blog.csdn.net/lcsy000/article/details/82782864

==和equals()的区别

标签:art   eof   判断   equals   not   coder   public   this   tps   

原文地址:https://www.cnblogs.com/RedMapleLeafAndGreenTea/p/14531427.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!