JAVA常见问题

2021-07-11 06:05

阅读:661

标签:问题   意义   重复   包括   bsp   规则   类型   集合   实现   

  1. == 和 equals()
    • 两个对象使用==,比较的是对象引用;
    • 如果要比较内容相等,一般使用equals(但不包括primitive类型);
    • equals默认是判断两个对象是否==,所以默认比较两个对象的引用;但是JAVA有些类重写了equals方法,实现判断内容是否也相等,如String, Date, Double,Integer,所以自定义类要实现equals,需要重写equals方法,同时有必要重写hashcode方法(既然要两个对象equals,那严格意义上hashcode也是一致的,否则在如HashMap,HashTable类似的集合存储以对象为key会有问题,因为是否重复是以对象key的hashcode值来判断重复);
    • 所以说,两个对象equals,则hashcode相等;但是hashcode相同的两个对象,不一定equals。
    • 注意:如果定义String str1="Test"; String str2 = "Test", str1 == str2 返回是true。
    • Map中以hash查找之所以高效(而不是通过遍历所有元素):首先将Map分区,然后将hashcode按某种规则分区存储,查找时只要先找到对应的区,最后在那个区进行遍历。

 

JAVA常见问题

标签:问题   意义   重复   包括   bsp   规则   类型   集合   实现   

原文地址:https://www.cnblogs.com/stpan/p/9551785.html


评论


亲,登录后才可以留言!