Java中String直接赋值和使用new的区别
2个回答
展开全部
直接赋值会将该字符串一直储存在缓存中,后面如果用到相同的字符串,则直接取这个字符串对象。而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,说明他们是不同的对象。
以上就是我个人的粗浅理解了,至于更深入的垃圾回收什么的还没了解过。
展开全部
你去看一下它底层的实现就明白了 ·
对于第一种方式· java有一个字符串缓冲区 你新建一个的时候它会先找缓冲区里有没有这个字符串 如果有 直接返回引用 没有就在里面新建
第二种方式 新建一个 它首先也会去缓冲区里边查找 不管有没有 它都会在堆里新建一个 如果缓冲区里面没有 则在缓冲区里面也新建一个·
例如string s=“tt”
string s1=“tt” s等于s1
而 string s=new string(“ss”)
string s1=new string(“ss”) s不等于s1
对于第一种方式· java有一个字符串缓冲区 你新建一个的时候它会先找缓冲区里有没有这个字符串 如果有 直接返回引用 没有就在里面新建
第二种方式 新建一个 它首先也会去缓冲区里边查找 不管有没有 它都会在堆里新建一个 如果缓冲区里面没有 则在缓冲区里面也新建一个·
例如string s=“tt”
string s1=“tt” s等于s1
而 string s=new string(“ss”)
string s1=new string(“ss”) s不等于s1
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询