gpt4 book ai didi

java - StringBuilder 中创建了多少个对象?

转载 作者:行者123 更新时间:2023-11-30 03:24:07 25 4
gpt4 key购买 nike

根据我对 String 对象的理解,每个字符串文字都是在字符串常量池上添加/创建的。

String a = new String("hello world");

正在创建两个对象,一个是添加到常量池中的“hello world”,另一个对象是 String 的新实例。 StringBuilder 是否也应用同样的原理?

StringBuilder b = new StringBuilder("java is fun");
b.append(" and good");

在 StringBuilder 示例中这是否意味着正在创建 3 个对象?第一个是 StringBuilder 的新实例,其他 2 个对象是字符串文字“java is fun”和“and good”?

最佳答案

是的,您的理解是正确的。 (但见下文。)字符串文字进入常量池,而 new String(...)new StringBuilder(...) 创建其他对象。 (StringBuilder 还创建一个内部字符数组对象,因此第二个示例中至少涉及四个对象。)请注意,对 b.append(...)< 的调用 可能会在内部创建另一个对象和一些垃圾,但前提是 b 使用的内部字符数组需要扩展。

编辑:如@fdreger points out in a comment ,与字符串文字对应的字符串对象不是在运行时创建的,而是在类生命周期的创建和加载阶段创建类时创建的(如 Java Language Specification 中所述;另请参阅有关runtime constant pool)。

关于java - StringBuilder 中创建了多少个对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30694596/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com