为了账号安全,请及时绑定邮箱和手机立即绑定

String str="慕课网"; 与String str2=new String("慕课网"); 两者之间有什么区别?

String str="慕课网";

与String str2=new String("慕课网");

两者之间有什么区别?

正在回答

2 回答

首先明白在计算机的内存中有堆和栈两块空间,其中栈中存放所有对象、函数、变量等的引用;而堆中存放对象、值等。 
不管是new出的对象还是用类似String str="慕课网";这类的对象,都是放在堆中的。 

Java虚拟机为了提高字符串应用效率,提供了字符串池来保存字符串常量,str创建字符串常量"慕课网"时,虚拟机会先检测字符串池中是否包含该字符串,如果不包含则创建该字符串常量,并将其保存在字符串池中,然后再返回。

而执行到String str2=new String("慕课网");系统会直接实例化该对象,而不会在池中查找。也不会将这个对象放在池中。 

4 回复 有任何疑惑可以回复我~
#1

AndyHT

正解!你可以试试用 == 来判断str 和 str2两个字符串是否相等,结果是false,它俩的地址不相等
2015-05-29 回复 有任何疑惑可以回复我~
#2

Perona 回复 AndyHT

谢谢捧场~~
2015-05-29 回复 有任何疑惑可以回复我~

用作初始化就没有区别

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

String str="慕课网"; 与String str2=new String("慕课网"); 两者之间有什么区别?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信