java中 String str="abc";和String str=new String"abc";有什么区别

 我来答
AlbertEricS
推荐于2018-03-15 · TA获得超过591个赞
知道小有建树答主
回答量:83
采纳率:0%
帮助的人:66.2万
展开全部
如果是String str = "abc";编译器首先会在常量池中寻找有没有"abc"这个字符串,如果有则直接从常量池中取,不会new,如果常量池中没有,则会new一个,并将"abc"存放到常量池中。

而String str = new String( "abc");则编译器直接new一个字符串,不会到常量池中查询。

所以:
String str1 = "abc";
String str2 = "abc";//str1是"abc",常量池中已经有了"abc",所以str2直接从常量池中取
String str3 = new String("abc");
String str4 = new String("abc");

System.out.println(str1 == str2);//true
System.out.println(str2 == str3);//false
System.out.println(str3 == str4);//false
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式