Java基础

markdown
## 何时需要重载hashcode() 与equals()方法 ``` https://blog.csdn.net/kris1025/article/details/79875638 ``` ## 何时:自定义对象作为 hashmap 的key why: Object 类 eaquls方法比较的是对象是否指向同一个地址,hashcode 是根据对象地址计算的。业务逻辑预期对象相等是指值是否相等。因此需要重载hashCode eaquls 1)重载hashCode()是为了对同一个key,能得到相同的Hash Code,这样HashMap就可以定位到我们指定的key上 2)重载equals()是为了向HashMap表明当前对象和key上所保存的对象是相等的,这样我们才真正地获得了这个key所对应的这个键值对。 ## == 与eaquls区别 == 比较对象是否指向同一个地址, eaquls一般预期是比较业务逻辑上是否相等,即值是否相等。 Integer 使用 == 比较要注意 Integer类有一个默认在-128~127之间的常量缓存池,当我们的基本类型的数在这个之间的时候会指向缓存中的对象,也就是同一个对象。 该范围内的相同值==比较相等,超过该范围即使数值相等,结果也不等 e.g. ``` https://blog.csdn.net/meiyijian/article/details/77230202 ``` ``` public static void main(String[] args) { // case 1 Integer a1 = Integer.valueOf(60); Integer b1 = 60; System.out.println("1:="+(a1 == b1)); // case 2 Integer a2 = 60; Integer b2 = 60; System.out.println("2:="+(a2 == b2)); // case 3 Integer a3 = new Integer(60); Integer b3 = 60; System.out.println("3:="+(a3 == b3)); // case 4 Integer a4 = 129; Integer b4 = 129; System.out.println("4:="+(a4 == b4)); } 1:=true 2:=true 3:=false 4:=false ``` ## HashMap 源码 put get操作过程 ``` https://zhuanlan.zhihu.com/p/21673805 ```

Comments

Popular posts from this blog

77.combinations

90.subsets-ii

40.Combination Sum II