0

练习题:

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 运算符的字符串,以及一个连接主菜和边,所以总共 5 个对象。

甜点和额外是 2 个对象,侧面和主菜的第三个分配。因此,在创建的 5 个对象中可以访问 4 个对象。

1别名,entre指side。

垃圾,主菜失去了对“火鸡”和“鸡肉”的提及。

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

4

1 回答 1

1

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

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

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

当使用 String 时+, a StringBuilder、 one 或 twochar[]和 aString被创建。

String extra = entree + side;

可以翻译成

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

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

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

于 2012-12-15T20:59:08.350 回答