Java软件工程师笔试核心试题及答案.docxVIP

  • 3
  • 0
  • 约8.03千字
  • 约 33页
  • 2026-06-27 发布于河南
  • 举报

Java软件工程师笔试核心试题及答案

一、Java基础核心试题

试题1:请说明Java中==和equals的区别,以及重写equals为什么必须重写hashCode?

答案:

1.==的核心规则:针对基本数据类型,==比较的是变量存储的字面量值;针对引用数据类型,==比较的是对象的内存地址,判断是否指向同一个对象实例。

2.equals的核心规则:equals是Object类提供的方法,默认实现逻辑与==完全一致,仅比较对象内存地址;但String、Integer等包装类均重写了equals方法,修改为比较对象的内容值。

3.重写equals必须重写hashCode的原因:

符合Java语言规范的强制约定:两个对象equals返回true时,其hashCode必须相等;hashCode相等的两个对象,equals不一定返回true。

适配哈希类容器的存储逻辑:HashMap、HashSet等哈希容器存储元素时,先通过hashCode计算元素对应的桶位,再通过equals比对元素是否重复。如果仅重写equals不重写hashCode,会导致两个equals相等的对象计算出不同的hashCode,被存储到不同桶位,违反哈希容器“键唯一”的约定,出现重复存储、查询不到对应元素的问题。例如自定义User类仅重写equals,两个属性完全一致的User实例作为HashMap的key存储

文档评论(0)

1亿VIP精品文档

相关文档