在java 中 String a=New String("abc") 与Strng b="a
在java中Stringa=NewString("abc")与Strngb="abc"有什么区别...
在java 中
String a=New String("abc")
与Strng b="abc" 有什么区别 展开
String a=New String("abc")
与Strng b="abc" 有什么区别 展开
7个回答
展开全部
前面那个是定义了一个String类对象a 并赋值为abc。此时的a是一个实例化对象
后面的b 是定义了一个String字符串变量 ,赋值abc 。顺便说一句 后面一句少了一个i
也可以这么理解:
String b= "abc"; 先在内存中找是不是有"abc" 这个对象,
如果有,就让b指向那个"abc".如果内存里没有"abc",就创建一个新的对象保存"abc".
String a=new String ("abc") 就是不管内存里是不是已经有"abc"这个对象,
都新建一个对象保存"abc"
后面的b 是定义了一个String字符串变量 ,赋值abc 。顺便说一句 后面一句少了一个i
也可以这么理解:
String b= "abc"; 先在内存中找是不是有"abc" 这个对象,
如果有,就让b指向那个"abc".如果内存里没有"abc",就创建一个新的对象保存"abc".
String a=new String ("abc") 就是不管内存里是不是已经有"abc"这个对象,
都新建一个对象保存"abc"
更多追问追答
追问
这样的话 我先String a=New String("abc")然后再String b="abc" 再然后a==b 返回的是true还是false?
追答
这个问题 是true和false 你可以写个简单的代码 到eclipse运行一下马上就能知道结果了。 代码是最有说服力的 。
展开全部
第一个 不管堆中是否存在abc 都要开辟一个新的,
第二个 如果堆中间存在abc 则直接引用,否则重新开辟
所以a和b的地址不同
第二个 如果堆中间存在abc 则直接引用,否则重新开辟
所以a和b的地址不同
追问
哦哦
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
new 的String对象会直接放入堆内存中,每次创建会开辟一个空间存放,
=号赋值的string对象会放入一个字符串池中,创建新对象的时候会先在里面查找,不存在才会开辟空间存放字符串,你再string c="abc",c和b会指向同一个空间
楼主可以试试
=号赋值的string对象会放入一个字符串池中,创建新对象的时候会先在里面查找,不存在才会开辟空间存放字符串,你再string c="abc",c和b会指向同一个空间
楼主可以试试
追问
哦哦
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
类型不同吧
a 是对象
b 是简单类型
a == b // 比较两者的值
a.equals(b) // 比较两者的类型 你试试
a 是对象
b 是简单类型
a == b // 比较两者的值
a.equals(b) // 比较两者的类型 你试试
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
String a=New String("abc")先创建一个abc对象,Strng b="abc"会先去找字符串池中有没有,没有才会创建
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询