Java难点高频面试题及详细答案(实战向).docxVIP

  • 1
  • 0
  • 约5.29千字
  • 约 8页
  • 2026-10-13 发布于河北
  • 举报

Java难点高频面试题及详细答案(实战向).docx

Java难点高频面试题及详细答案(实战向)

一、Java基础核心难点

1、==和equals的核心区别?重写equals为什么必须重写hashCode?

详细答案:

1)核心区别

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

equals是Object类的方法,原生默认实现和==一致,也是比较对象地址。大部分业务类(String、Integer)会重写该方法,重写后比较的是对象的内容属性值。

2)重写equals必须重写hashCode的原因

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

如果只重写equals不重写hashCode,会出现内容相等的两个对象,hashCode值不同的情况。此时哈希集合会判定为两个不同对象,导致去重失效、取值失败,违反Java哈希规范。

核心原则:相等的对象必须hashCode相等,hashCode相等的对象不一定相等。

2、String、StringBuilder、StringBuffer的区别?为什么String不可变?

详细答案:

1)三者核心区别

String:字符串常量,底层是被final修饰的char数组(JDK9后为byte数组),不可变;线程安全;频繁拼接字符串会产生大量中间垃圾对象,效率极低。

St

文档评论(0)

1亿VIP精品文档

相关文档