String str=new String("hello"):

String str=new String("hello"):

String str=new String("hello"):    和String str="hello"; 有什么区别吗?



正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学你好,

String str=“hello”; 

先去常量池来查找是否存在“hello”,如果不存在,就在常量池中开辟一个空间来存储“hello”;如果存在,就不用新开辟空间。

String str=new String("hello") ;

先去常量池中查找是否存在“hello”,如果不存在,则在常量池中开辟一个空间存储“hello”。在运行时期,通过String类的构造器在堆内存中new了一个空间,然后将常量池中的“hello”复制一份存放到该堆空间中,在栈中开辟名字为str的空间,存放堆中new出来的这个String对象的地址值。

也就是说,前者在初始化的时候可能创建了一个对象,也可能一个对象也没有创建;

后者因为new关键字,至少在内存中创建了一个对象,也有可能是两个对象。

如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师