Java 高级面试题及详细答案(实战完整版).docxVIP

  • 0
  • 0
  • 约5.63千字
  • 约 8页
  • 2026-09-20 发布于河北
  • 举报

Java 高级面试题及详细答案(实战完整版).docx

Java高级面试题及详细答案(实战完整版)

一、Java核心基础高级考点

1.说说==和equals的区别?重写equals为什么必须重写hashCode?

核心区别:

==是比较运算符,对于基本数据类型,比较的是数值本身;对于引用类型,比较的是对象的内存地址。

equals是Object类的方法,原生底层就是==,默认比较对象地址。大部分业务类(String、Integer)会重写该方法,重写后比较的是对象的内容属性。

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

Java哈希表集合(HashMap、HashSet)的存储规则是:先判断hashCode是否一致,再判断equals是否为true。

如果只重写equals不重写hashCode,会出现两个内容完全相同的对象,hashCode值不同的情况。此时哈希集合会判定为两个不同对象,导致去重失效、缓存匹配异常等问题,违反Java等值对象哈希码一致的规范。

2.String、StringBuilder、StringBuffer的区别?日常开发如何选择?

1.String:不可变字符串,底层是final修饰的char数组(JDK9后为byte数组)。每次拼接、修改字符串都会生成新对象,频繁操作会产生大量垃圾对象,性能差。

2.StringBuffer:可变字符串,所有方法加了synchroni

文档评论(0)

1亿VIP精品文档

相关文档