Java string

Stringstr=newString(newString(newString(newString(“中国”))));Stringstr1=“中国”;Stringstr2... String str = new String(new String(newString(new String(“中国”))));
String str1 = “中国”;
String str2 = “中”;
String str3 = “国”;
String str4 = new String(str2 + str3)
上述语句一共创建了几个字符串对象?并说明是如何分配内存的?
展开
 我来答
vision_Yiu
2019-08-16 · TA获得超过349个赞
知道小有建树答主
回答量:251
采纳率:100%
帮助的人:74.6万
展开全部

第一行:字符串池创建了“中国” 对象,new一次创建一个对象

小计:4个String对象 1个字符串池对象

第二行:“中国”在字符串池已经存在,所以不创建对象直接引用

小计:0

第三、四行:“中”,“国”在字符串池不存在所以创建2次

小计:2个字符串池对象

第五行:str2 + str3=“中国”,因为“中国”已经存在,字符串池不添加,new对象添加一个

小计:1个String对象 0个字符串池对象


汇总5个String对象 3个字符串池对象

复制网上一段解释

ps:String a="abc";,这行代码被执行的时候,JAVA虚拟机首先在字符串池中查找是否已经存在了值为"abc"的这么一个对象,它的判断依据是String 类equals(Object obj)方法的返回值。如果有,则不再创建新的对象,直接返回已存在对象的引用;如果没有,则先创建这个对象,然后把它加入到字符串池中,再将它的引用返 回。

Evil灬夜神丶
2019-08-16 · TA获得超过183个赞
知道答主
回答量:269
采纳率:69%
帮助的人:30.4万
展开全部
9个, String str = new String("中国"), 中国放到堆里, str 放到栈里, str指定堆里对象的引用 声明:此回答只做参考, 如有错误, 请略过
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式