String s = new String("xyz"); 为什么创建了2个String Object?
答案:2 悬赏:40 手机版
解决时间 2021-04-09 21:12
- 提问者网友:箛茗
- 2021-04-08 20:48
能说下原理吗,谢谢
最佳答案
- 五星知识达人网友:第幾種人
- 2021-04-08 20:58
String s = new String("xyz");
创建两个对象
第一个 new的时候 会在堆生成一个对象
第二个 当成参数传入的"xyz"会在常量池生成一个对象 以后用 String x="xyz" 之类的新的变量都会引用常量池的xyz
所以是生成两个对象
创建两个对象
第一个 new的时候 会在堆生成一个对象
第二个 当成参数传入的"xyz"会在常量池生成一个对象 以后用 String x="xyz" 之类的新的变量都会引用常量池的xyz
所以是生成两个对象
全部回答
- 1楼网友:廢物販賣機
- 2021-04-08 21:30
2个
如果讲堆栈,估计你也难懂
这样说吧,就是如果内存中没有“xyz”,那么新建一个字符串“xyz”,然后以之为模板(比喻),在分配一个内存,内容和“xyz”一样。
比如说:
string s1 = new string("xyz");
string s2 = new string("xyz");(已存在模板,不再创建xyz)
那么应该就是创建3个对象,而不是4个
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯