==与equls的比较

==

==比较的是对象的引用地址(内存地址是否相同)

但是 int 类型比较的时候比较的是 基本数据类型比较。


equals

equals一般重写的话都是比较对象的内容 即使引用地址不相同,但是内容相同任然返回ture;

但是如果不重写话,则和==相同

如图:

image-20240818151214673

还要一个概念Objects.equals这是java的工具类

image-20240818151326519

很简单,如果你的类没有重写的话,就相当于 == 比较,如果重写了比较内容,则equals方法会比较内容即可。

建议进行比较的时候,使用Objects.equals()这个工具类。


总结

如果进行比较的时候,要确定是否是比较对象的内容还是地址完全相同,如果地址相同则说明内容和地址都会相同,如果只是比较内容,建议使用equals方法来进行比较。

关于int类型和Integer类型比较

int Integer比较

integer则回拆箱来进行比较。

== 比较的还是int类型的方法,比较的是值。无论是否超过-128,127;

== 基本类型比较的都是值,无论引用地址是否相同

基本类型八个:int byte char float double boolean short long

内存地址相同 则这俩个引用指向的是同一个对象的实例,因此内容完全相同,对象也是同一个对象。

new 出的对象 jvm都会分配一个新的内存quy,内存地址总会不相同