java中“==” 与 equals 区别

来源:互联网 发布:java免费发送短信插件 编辑:程序博客网 时间:2024/05/21 11:25

首先这是一个很经典的例子,我们可以编写一个简单的例子如下:


有上述例子我们可以知道,“==”是比较的我们数据地址,而equals则比较的是数据内容,a==b,因为a,b为常量在常量池中为同意数据块,所以相等,a1,b1是不同对象,在堆中存储在不同区域,地址不同,所以a1 == b1为false ,那么有些就奇怪了,为什么person equals比较为false呢?此时我们就应该看其原理,person调用的是object equals方法,那么object equals是怎么比较的呢?如下:


由源码我们可以知道,它比较的也是地址,但是a1.equals(b1)就不一样了,在Stirng重写了此方法:


有以上可知,Stirng的比较是获取值之后比较每一个字符,所以a1.equals(b1)为true.


原创粉丝点击