Java中String直接赋值和使用new的区别

 我来答
大侠联盟
推荐于2017-11-23 · TA获得超过244个赞
知道答主
回答量:62
采纳率:66%
帮助的人:35.1万
展开全部

直接赋值会将该字符串一直储存在缓存中,后面如果用到相同的字符串,则直接取这个字符串对象。而new是每次都新建一个对象。可通过执行下面的代码来看出区别:

String a = "abc";
String b = "abc";
System.out.println(a==b);        //true
String c = new String("def");
String d = new String("def");
System.out.println(c==d);        //false

上面示例中, a==b的结果为true,说明它们是同一个对象,而c==d的结果为false,说明他们是不同的对象。

以上就是我个人的粗浅理解了,至于更深入的垃圾回收什么的还没了解过。

范岸啥
2016-10-25 · 超过29用户采纳过TA的回答
知道答主
回答量:380
采纳率:0%
帮助的人:73万
展开全部
你去看一下它底层的实现就明白了 ·
对于第一种方式· java有一个字符串缓冲区 你新建一个的时候它会先找缓冲区里有没有这个字符串 如果有 直接返回引用 没有就在里面新建
第二种方式 新建一个 它首先也会去缓冲区里边查找 不管有没有 它都会在堆里新建一个 如果缓冲区里面没有 则在缓冲区里面也新建一个·

例如string s=“tt”
string s1=“tt” s等于s1
而 string s=new string(“ss”)
string s1=new string(“ss”) s不等于s1
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式