首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >字符串对象创建的微妙之处:别名和垃圾

字符串对象创建的微妙之处:别名和垃圾
EN

Stack Overflow用户
提问于 2012-12-16 04:49:01
回答 1查看 1.6K关注 0票数 0

练习测试题:

代码语言:javascript
复制
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运算符的字符串,以及一个连接entree和side的字符串,因此总共创建了5个对象。

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

1别名,entree指的是side。

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

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

EN

回答 1

Stack Overflow用户

发布于 2012-12-16 04:59:08

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

当字符串包含char[]时,new String可能会创建一个或两个新对象

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

当使用String +时,将创建一个StringBuilder、一个或两个char[]和一个String

代码语言:javascript
复制
String extra = entree + side;

可以翻译为

代码语言:javascript
复制
String extra = new StringBuilder().append(entree).append(side).toString();

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

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13896068

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档