当前位置 :
求各种答案:Strings=newString("xyz")究竟创建了几个StringObject?2个3个?一种说法是引用对象s和new时候放在heap的”xyz“;一种说法是在编译时候由”“建了一个xyz对象放在常量池中,后new一个放在
 更新时间:2024-04-28 04:39:43
11人问答
问题描述:

求各种答案:Strings=newString("xyz")究竟创建了几个StringObject?2个3个?

一种说法是引用对象s和new时候放在heap的”xyz“;

一种说法是在编译时候由”“建了一个xyz对象放在常量池中,后new一个放在heap,

难道是3个?s+常量池的+new产生的?

s不是对象.2个

李庆周回答:
  Strings=newString("xyz")   创建两个对象,引用对象s,字符串对象"xyz";   Strings1=newString("xyz")Strings=newString("xyz")   两个引用对象s1、s,两个内容相同的字符串对象"xyz",它们在内存中的地址是不同的.   记住,凡是用new生成的总是新对象.   Strings1="xyz";Strings="xyz";   如果像上面这样写,s1、s引用的才是同一个常量池中的对象.
罗治敏回答:
  难道编译期间的创建放在常量池的xyz不是对象?
李庆周回答:
  在java中,一切都是对象。只是常量池的"xyz"只有一份,无论有多少个引用。
罗治敏回答:
  如果开始在常量池中没有xyz这个对象,你不是要新创建一个吗?那就是3个啊
李庆周回答:
  对,可以这么理解
罗治敏回答:
  也就是说这个答案可能有2个也可能有3个。。。。。。。。
李庆周回答:
  Strings="xyz";//这种方式是把"xyz"放到常量池,这是编译时产生的Strings=newString("xyz");//这种方式是把"xyz"放到虚拟机的heap中,这是运行时产生的举例来说:Strings1="xyz";//在常量池存放一个对象Strings2=“xyz”;//s2引用常量池中的对象,不产生新对象Strings3=newString("xyz");//在虚拟机的heap中产生一个新的对象Strings4=newString("xyz");//在虚拟机的heap中又产生一个新的对象这么说能理解了吗?
罗治敏回答:
  我能理解你的意思,我想问的是newString("xyz")应该是这样理解吧:我要创建一个值为“xyz”的对象在heap中,其中()里面的“xyz”应该是个实际参数吧,那么作为实际参数它首先应该在编译期间就放在常量池中,如果有就不创建,没有就创建一个新的“xyz”对象。是否?
李庆周回答:
  是的
罗治敏回答:
  今天看了下java编程思想4s不是对象,它是句柄或者说是引用。。。。
李庆周回答:
  引用也是一类对象,所以说s本身也是对象。
最新更新
优秀其它推荐
查询网(025771.com)汇总了汉语字典,新华字典,成语字典,组词,词语,在线查字典,中文字典,英汉字典,在线字典,康熙字典等等,是学生查询学习资料的好帮手,是老师教学的好助手。
声明:本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。

邮箱:  联系方式:

Copyright©2009-2021 查询网 025771.com 版权所有 闽ICP备18026954号-22