【字符串的hashCode】hashCode相等但是对应的字符串值不一定相等
字符串的hashCode为什么需要理解
在平常的开发中,大多数是使用着equals()来比较两个数据之间的值是否是相等的,这是正确的做法。前两天在我在做开发时遇到一个问题,就是在使用SqlMapper中查询sql数据时;对于msId 的生成是根据即将查询的sql进行生成的;会把即将查询的sql生成一个 msId 就是这个sql的hashCode;我在次查询时sql整体不变就参数不一样;但是HashCode一样就会用一样的 msId 就导致根据sql得出msId查询出另一个sql的数据了,用此篇文章进行总结。
代码例子
@Testvoid contextLoads() {// 字符串案例1String name = "4105062006120900341";// 字符串案例2String name1 = "3408232006111921131";int i = name.hashCode();int a = name1.hashCode();System.out.println(i);System.out.println(a);// 两个字符串的HashCode是一样的System.out.println(i == a);}

- 根据上面两个字符串可以清晰理解 ,当hashCode不一致时会造成很直接并不明显的问题;要多打印日志进行清晰的看执行的数据。