今天测试Integer的时候,突然突发奇想,Integer integer = new Integer(100);Integer integer1 = 100; integer == integer1的结果为true,那么String会怎么样呢???
我心想,a,b两者的地址不一样,两者打印出来的hashcode结果一定不一样
但是结果和我想得总是不一样,
两者打印出来的hashcode()完全一致,于是我再次测试应该肯定a == b,毕竟两者的hashcode相同,那么两者的内存地址应该是一样的,但是结果总是和我想的背道而驰。
????
为什么???,为什么会是false。爱学习的楼主总是打破砂锅问到底,看源码
原来如此,String重写了hashcode()方法,String类型的hash值是根据字符串的内容来决定的,并不是内存地址,只要两个String类型的字符串内容一致,那么两者的hashcode就相同。
希望大家以后不要向楼主一样。