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)
上述语句一共创建了几个字符串对象?并说明是如何分配内存的? 展开
String str1 = “中国”;
String str2 = “中”;
String str3 = “国”;
String str4 = new String(str2 + str3)
上述语句一共创建了几个字符串对象?并说明是如何分配内存的? 展开
展开全部
第一行:字符串池创建了“中国” 对象,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)方法的返回值。如果有,则不再创建新的对象,直接返回已存在对象的引用;如果没有,则先创建这个对象,然后把它加入到字符串池中,再将它的引用返 回。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询