副本第一关:new String("x")对象创建问题

110 阅读1分钟

一、new String("ab")会创建几个对象?

会创建2个对象:

  • 对象1:new关键字在堆空间中创建的String;
  • 对象2:字符串常量池中的对象"ab"。

二、new String("a") + new String("b")会创建几个对象?

会创建6个对象:

  • 对象1:new StringBuilder();
  • 对象2:堆中的new String("a");
  • 对象3:字符串常量池中的"a";
  • 对象4:堆中的new String("b");
  • 对象5:字符串常量池中的"b";
  • 对象6:调用StringBuilder.toString()会创建一个new String("ab")在堆中。

(ps:调用toString(),不会在字符串常量池中生成新对象ab)