1.==与equals的区别
1)基本类型:==比较的是值,equals比较不了基本类型(基本类型不能调方法)
2)引用类型:==比较的是内存地址,equals的底层默认是==,比较的也是地址,但是具体比较什么,取决于当前对象如何重写equals犯法
2.为什么重写了equals方法必须重写hashcode方法
-- 两个对象equals()返回true,hashcode()必须相等
-- 两个对象hachcode()相等,equals()比较不一定为true
之所以重写equals必须重写hashcode的原因是,当在一个类中,如何需要重写equals方法,原则上是要重写hashcode方法的,来保证那个上面的原则。这是因为当前的类对象有可能作为key方法HashMap的话,则两个equals比较为true的对象,应该要放入同一个哈希槽中,但是若因为没用重写hashcode方法,则这两个对象有可能算出不同的哈希槽的下标,从而导致两个“相同”的key,放入了两个不同的哈希槽中,违背了HashMap的设计原则。