简述==与equals()方法的区别。

如题所述

简述==与equals()方法的区别。如下:

1.equals是方法,而==是操作符。

2.对于基本类型的变量来说(如short、int、long、float、double),只能使用==,因为这些基本类型的变量没有equals方法。对于基本类型变量的比较,使用==比较,一般比较的是它们的值。

3.对于引用类型的变量来说(例如String类)才有equals方法,因为String继承了Obiect类equals是Object类的通用方法。

对于该类型对象的比较,默认情况下,就是没有重写Object类的equals方法,使用==和 equals比较是一样效果的,都是比较的是它们在内存中的存放地址。

但是对于某些类来说,为了满足自身业务需求,可能存在equals方法被复写的情况,这时使用 equals方法比较需要看具体的情况,例如String类,使用equals方法会比较它们的值

equals和==简介

==既可以比较基本类型也可以比较引用类型,对于基本类型就是比较值,对于引用类型比较的就是内存地址,equals是属于java.lang.Ojbect类里的方法,如果该方法没有被重写过,默认也是==。

我们可以看到string类的equals方法是被重写过的,而且string类在日常开发中用的比较多,久而久之,就形成了equals是比较值得错误观点,具体要看这里有没有重写Ojbect的hashCode方法和equals方法来判断。

如果重写了equals()没有重写hashCode(),这两个实例类有可能是逻辑上相等,但是jvm只看Ojbect.hashCode()方法,所以jvm还是认为这是两个对象,因此违反了相等的对象必须具有相等的散列码,所以重写equals方法的时候一般都需要同时重写hashCode方法。



温馨提示:答案为网友推荐,仅供参考