gpt4 book ai didi

java - 字符串对象创建的微妙之处 : aliases and garbage

转载 作者:行者123 更新时间:2023-12-01 14:59:22 25 4
gpt4 key购买 nike

练习测试问题:

Consider the following code:

String entree = new String (“chicken”);
String side = “salad”;
entree = “turkey”;
String dessert;
entree = side;
String extra = entree + side;
dessert = “pie”;

How many String objects were created, and how many are accessible at the end?
How many aliases are present, and is there any garbage?

我的逻辑:创建了 3 个文字,一个带有 new 运算符的 String,以及一个连接 entree 和 side 的字符串,总共 5 个对象。

甜点和额外是 2 个对象,配菜和主菜的第三个分配。因此,总共创建了 5 个对象,其中有 4 个对象是可以访问的。

1个别名,entre指side。

垃圾,主菜丢失了对“火鸡”和“鸡肉”的引用。

您能帮我评估一下我对这个问题的思考过程吗?

最佳答案

如果尚未创建这四个文字,则将创建它们。

new String 可以创建一个或两个新对象,因为 String 包含 char[]

在类卸载之前,字符串文字不会被释放。

当使用字符串+时,一个StringBuilder,一个或两个char[],和一个String创建。

String extra = entree + side;

可以翻译成

String extra = new StringBuilder().append(entree).append(side).toString();

这意味着有一个新的 StringBuilder/String 和一个 char[]

这意味着最多有 6 个对象可以被垃圾回收。

关于java - 字符串对象创建的微妙之处 : aliases and garbage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13896068/

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