首页 > 编程语言 > 详细

JAVA常见问题

时间:2018-08-29 00:24:17      阅读:151      评论:0      收藏:0      [点我收藏+]
  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常见问题

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!