Java面试题更新 2026-08-05

在 Java 中执行 new String("yupi") 语句时,会创建多少个对象?请分析对象创建的具体过程。

技术原理Java

考察说明

考查对 Java 字符串常量池和 new 关键字创建对象机制的理解。

回答思路

  1. 【回答框架 1】该语句会创建两个对象,分别是字符串常量池中的 "yupi" 字符串对象,以及堆中通过 new 创建的新 String 对象。
  2. 【回答框架 2】"yupi" 作为字面量,首次遇到时会在字符串常量池中创建一个 String 对象,后续相同的字面量直接复用该对象。
  3. 【回答框架 3】new String("yupi") 会在堆中创建一个新的 String 对象,该对象的值指向常量池中的 "yupi",但两者是不同的对象。
  4. 【回答框架 4】如果常量池中已有 "yupi",则只创建一个堆对象;否则创建两个。
  5. 【关键点 1】new String("yupi") 通常创建两个对象:常量池中的字面量对象和堆中的新对象。
  6. 【关键点 2】常量池中的对象用于缓存字符串字面量,堆中的对象是显式创建的独立实例。
  7. 【关键点 3】使用双引号直接赋值时,可能不创建新对象,而是引用常量池中的现有对象。
  8. 【易错点 1】误以为只创建一个对象,而忽略常量池中的字面量对象。
  9. 【易错点 2】混淆 String 对象的不可变性和常量池的复用机制,误以为 new 创建的对象与常量池对象相同。
  10. 【易错点 3】忽略常量池已有字面量的情况,导致对象数量判断错误。