最近在准备秋招,发现了牛客网上一个很详细的面试考点汇总,但是没有答案,于是自己在复习的同时总结一下题目的答案。
为什么重写equals还要重写hashcode
因为如果两个对象相等,他们的hashcode一定要相等。hashcode计算是根据内存地址计算的,必须重写后才能让不同的两个对象hashcode相等。
说一下map的分类和常见的情况
HashMap 无序
TreeMap 有序
LinkedHashMap 可以记住元素的插入顺序
Object若不重写hashCode()的话,hashCode()如何计算出来的?
若没有重写,默认根据对象的内存位置计算一个特有的序号
==比较的是什么?
==操作符专门用来比较两个变量的值是否相等,也就是用于比较变量所对应的内存中所存储的数值是否相同。对于基本类型,就是比较值是否相等,对于引用类型,比较是否引用同一对象,即指向同一内存首地址。
若对一个类不重写,它的equals()方法是如何比较的?
public boolean equals(Object obj) {
return (this == obj);
}
就是比较两个引用是否指向同一对象。