值类型是存储在内存中的堆栈(以后简称栈),而引用类型的变量在栈中仅仅是存储引用类型变量的地址,而其本身则存储在堆中。

==操作比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量在堆中存储的地址是否相同,即栈中的内容是否相同。

equals操作表示的两个变量是否是对同一个对象的引用,即堆中的内容是否相同。

==比较的是2个对象的地址,而equals比较的是2个对象的内容。

显然,当equals为true时,==不一定为true;

API里的类大部分都重写了equals方法,没有重写的一般是自己写的类,

 如果是你自己定义的一个类,比较自定义类用

equals和==是一样的,都是比较句柄地址,因为自定义的类是继承于object,而object中的equals就是用==来实现的,你可以看源码。

相关文章:

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