Java高频面试题及详细答案(真实面试版).docxVIP

  • 1
  • 0
  • 约4.8千字
  • 约 7页
  • 2026-06-08 发布于河北
  • 举报

Java高频面试题及详细答案(真实面试版).docx

Java高频面试题及详细答案(真实面试版)

一、Java基础核心(必问)

1、==和equals的区别?

这是面试最基础的问题,核心区别分两种场景:

基本数据类型:==比较的是数值本身,基本类型没有equals方法。

引用数据类型:==比较的是对象的内存地址,判断是不是同一个对象;equals是方法,默认也是比较地址,但像String、Integer这些常用类都重写了equals,重写后是比较对象的内容值。

举个实际例子:newString(abc)==abc是false,因为地址不一样;但equals结果是true,因为内容相同。

2、String、StringBuilder、StringBuffer的区别?

核心就三点:可变性、线程安全、性能

1、String:字符串不可变,每次拼接都会生成新字符串对象,频繁拼接会产生大量垃圾对象,效率最低。

2、StringBuffer:可变字符串,方法加了synchronized锁,线程安全,多线程场景用,性能稍差。

3、StringBuilder:可变字符串,无锁,线程不安全,单线程场景首选,性能最好。

实际开发中:绝大多数业务都是单线程字符串拼接,直接用StringBuilder;只有多线程共享字符串的场景才用StringBuffer。

3、final、finally、finalize的区别?

三个单词只是长得像

文档评论(0)

1亿VIP精品文档

相关文档