首页 > 其他 > 详细

equlas和==的区别

时间:2020-11-16 22:35:09      阅读:32      评论:0      收藏:0      [点我收藏+]

equlas和==的区别

1. ==

分为两种情况

1.当两个值为基本数据类型时,此时比较的是两个数字的值。(byte、short、int、long、flout、double、char、boolen)

2.当两个值为引用数据类型时,此时比较的为两个值所在的堆内存地址。(除非两个值为同一个new出来的对象,否则全为false,因为只要new就会开辟新的地址空间)--只要new就是false。

2. equlas

它只要作用于Object类,比较是否为同一个对象。

1.如果没有对equlas方法进行重写,则比较的是两个值的对象地址。

2.例如String、Date、Integer等方法对euqals进行重写之后,比较的是两个对象指向的内容。

3.equals的源码
public boolean equals(Object obj) {
    //this - s1
    //obj - s2
    return (this == obj);
}

 

 

方法默认是比较对象的内存地址,在一些类库中,方法被重写了,例如String、Date、Integer等。

所以说,对于复合数据类型之间进行equals比较,在没有覆写equals方法的情况下,他们之间的比较还是内存中的存放位置的地址值,跟双等号(==)的结果相同;如果被复写,按照复写的要求来。

4.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;
    }

 

 
练习

题目:

技术分享图片

答案:

技术分享图片

结论:

 技术分享图片

equlas和==的区别

原文:https://www.cnblogs.com/pansin/p/13991481.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!