源码阅读之String
hashcode返回内存地址编号。
和
equals方法判断两个内存地址是否相等。
equals相同的两个对象,hashcode一定相同,
equals不同两个对象,hashcode不一定不同。
换句话JVM可能会让两个不同的对象产生相同的hashcode,这个时候就需要再通过equals方法来判断这两个对象是否为同一个对象了。
equals重写时,hashcode也要被重写。
一个类要作为HashMap的key,必须重写equals和hashcode方法,因为hashmap的put方法中会调用这俩方法来判断是否相同key,那么如果只改一处会导致逻辑不一致,需要都改。
和
equals方法判断两个内存地址是否相等。
equals相同的两个对象,hashcode一定相同,
equals不同两个对象,hashcode不一定不同。
换句话JVM可能会让两个不同的对象产生相同的hashcode,这个时候就需要再通过equals方法来判断这两个对象是否为同一个对象了。
equals重写时,hashcode也要被重写。
一个类要作为HashMap的key,必须重写equals和hashcode方法,因为hashmap的put方法中会调用这俩方法来判断是否相同key,那么如果只改一处会导致逻辑不一致,需要都改。
查看3道真题和解析