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

java中“==” 与 equals 区别

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

java中“==” 与 equals 区别

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

java中“==” 与 equals 区别

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


相关文章:

  • 2021-06-18
  • 2021-09-10
  • 2021-07-25
  • 2022-12-23
  • 2021-11-06
  • 2021-05-20
  • 2021-10-15
猜你喜欢
  • 2021-12-10
  • 2021-11-21
  • 2022-01-09
  • 2022-01-23
  • 2021-05-22
  • 2021-12-09
  • 2021-07-10
相关资源
相似解决方案