谈谈==和equals的区别

一般来说,==比较的是值,而equal比较的是内容。

对于基本数据类型,只有==没有equal,比较的就是它的值;
对于对象来说,都继承于object类,其equal方法如下:可见传进去的是引用,比较的是引用的值,即内存里的地址值。

//obj   the reference object with which to compare.
        public boolean equals(Object obj) {
           return (this == obj);
    }

而对于String来说:先与传进去的引用比较地址;如果是String类的话,就一个一个字符串相比较。
   

 public boolean equals(Object anObject) {
                    if (this == anObject) {
                        return true;
                    }
                    if (anObject instanceof String) {
                        String anotherString = (String)anObject;
                        int n = count;
                        if (n == anotherString.count) {
                        char v1[] = value;
                        char v2[] = anotherString.value;
                        int i = offset;
                        int j = anotherString.offset;
                        while (n-- != 0) {
                            if (v1[i++] != v2[j++])
                            return false;
                        }
                        return true;
                        }
                    }
                    return false;
                    }

对于包装类如Integer,重写了equal方法,同样里面比较的是值
          

 public boolean equals(Object obj) {
                if (obj instanceof Integer) {
                    return value == ((Integer)obj).intValue();
                }
                return false;
                }

 

转载于:https://my.oschina.net/u/3709173/blog/1827557

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值