对于自己定义的类,由于java会默认继承object类,object类是没有重写equals方法的,其作用和==方法一致,都是用来判断两个变量的地址是否一致,一致返回true,不一致false。
对于String,Integer等已经重写过equals方法的类,这时候==和equals方法就不一样了,==的作用还是一样,equals方法则会判断对应的值是否一样,比如 :
String str = new String(“asd”);
String sss = new String(“asd”);
这时候用==比较返回false。因为他们地址不一样。用equals方法判断就会返回true,因为值相同。
所以如果我们自己人为定义一个类,需要用equals方法来比较值,就一定要重写equals方法。但这时候又有一个问题,就是重写equasl方法必须要重写hashcode方法,因为hashcode一开始是和equals方法配套使用的,其开始默认会比较地址。如果不同时重写,就会导致存储重复的数值。导致Hashmap混乱。