Java奇葩面试题及详细真实答案(实战接地气版).docxVIP

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

Java奇葩面试题及详细真实答案(实战接地气版).docx

Java奇葩面试题及详细真实答案(实战接地气版)

这套题目都是一线大厂、中小公司高频出现的陷阱题、反常识题、冷门坑点题,不是常规八股文,专门考察开发者对Java底层细节、语法盲区、隐性规则的掌握,答案全部贴合实际开发,通俗易懂,无书面套话。

一、基础语法奇葩陷阱题

1、Strings=newString(a)+newString(b);到底创建了几个对象?

标准答案:3个对象

很多人会答错成4个,核心坑点在字符串拼接的底层逻辑,拆解如下:

1.常量池创建:a、b两个字符串常量对象,存入字符串常量池;

2.堆内存创建:newString(a)在堆中创建1个新对象,引用常量池的a;newString(b)在堆中创建1个新对象,引用常量池的b;

3.拼接过程:JDK8中,字符串拼接会默认创建StringBuilder做拼接,最终调用toString()生成新字符串对象,这个新对象是堆内存新对象,不会进入常量池。

去重统计:拼接后最终有效对象为:常量池a、常量池b、拼接后的ab堆对象。两个new出来的临时字符串对象会被快速回收,不计入有效创建对象统计(面试通用判定规则),所以标准答案为3个。

补充:如果是Strings=a+b,编译期优化,只会创建1个常量池ab对象。

2、Integera=128,b=128;为什么a==b

文档评论(0)

1亿VIP精品文档

相关文档