为什么两个String类型的数据,它们的hashcode()相同,但是==的结果为false

今天测试Integer的时候,突然突发奇想,Integer integer = new Integer(100);Integer integer1 = 100; integer == integer1的结果为true,那么String会怎么样呢???

《为什么两个String类型的数据,它们的hashcode()相同,但是==的结果为false》

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

    原文作者:lo_nanase_ve
    原文地址: https://blog.csdn.net/lo_nanase_ve/article/details/107899098
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞