在java 中 String a=New String("abc") 与Strng b="a

在java中Stringa=NewString("abc")与Strngb="abc"有什么区别... 在java 中
String a=New String("abc")

与Strng b="abc" 有什么区别
展开
 我来答
liuyang054
推荐于2016-06-18 · TA获得超过9093个赞
知道大有可为答主
回答量:5317
采纳率:78%
帮助的人:5291万
展开全部
前面那个是定义了一个String类对象a 并赋值为abc。此时的a是一个实例化对象
后面的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运行一下马上就能知道结果了。   代码是最有说服力的 。
百度网友27021c1535
2015-04-03 · TA获得超过219个赞
知道小有建树答主
回答量:483
采纳率:66%
帮助的人:171万
展开全部
第一个 不管堆中是否存在abc 都要开辟一个新的,
第二个 如果堆中间存在abc 则直接引用,否则重新开辟
所以a和b的地址不同
追问
哦哦
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
龙光瑞像416
推荐于2018-04-11 · 超过21用户采纳过TA的回答
知道答主
回答量:48
采纳率:0%
帮助的人:37.5万
展开全部
new 的String对象会直接放入堆内存中,每次创建会开辟一个空间存放,
=号赋值的string对象会放入一个字符串池中,创建新对象的时候会先在里面查找,不存在才会开辟空间存放字符串,你再string c="abc",c和b会指向同一个空间
楼主可以试试
追问
哦哦
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
mtfabc
2015-04-03
知道答主
回答量:33
采纳率:0%
帮助的人:11.3万
展开全部
类型不同吧
a 是对象
b 是简单类型
a == b // 比较两者的值
a.equals(b) // 比较两者的类型 你试试
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
陨落天空ok
2015-04-03 · TA获得超过197个赞
知道小有建树答主
回答量:233
采纳率:71%
帮助的人:108万
展开全部
String a=New String("abc")先创建一个abc对象,Strng b="abc"会先去找字符串池中有没有,没有才会创建
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式