JAVA常见问题
Posted 岩文01
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA常见问题相关的知识,希望对你有一定的参考价值。
- == 和 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常见问题的主要内容,如果未能解决你的问题,请参考以下文章