Java 中String a="abc"和String a = new string("abc")

RT,两个有何区别?
String a="abc";
String b="abc";
a==b->true,
但是String a = new string("abc");
String b = new string("abc");
a==b->flase;
为什么.

new String("abc")这种是new了一个Object,abc是被储存在其内部的值,“=”把指针赋给a,b,但是a,b指向的是不同的对象,所以返回值是false


大概是这种关系:

即a b指向不同的对象

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-06-02
所以说比较两个String的时候不应该用==, 第二种情况你用a.equals(b)就是true了

在java里物体的名字相当于一个标签。当你做第一种的时候,"abc"这个物体被创造了出来,并打上了一个a的标签,然后同一个物体又被打上了b这个标签,但本质上a和b是同一个物体,所以a==b ->true.

第二种的时候,b是一个新的物体,存储的位置和a不一样,所以a==b是false本回答被网友采纳
相似回答