2016-08-15 77 views

回答

1

当你使用这个

String a="abc"; 
String b="abc"; 

java的内存是abc只创建一个对象,并在这里a和b都指向同一个对象,并==不检查字符串的内容,而不是它检查的参考值。但只要你做到这一点

String b=new String("abc"); 

Java的内存是从a不同,现在B和A都指向两个不同的对象,因此,如果你有equals功能结果比较的内容将是真正创建一个新对象b但如果您现在比较参考,结果将是错误的

Read about it's usage

+0

为什么你发布的答案几乎是以前发布的这个问题的答案的重复? –

+0

我正在写这个答案,并且他在我即将完成的时候发布了一个地方,并且存在差异,我提到了什么==做什么以及什么等于。我尊重您的观点,但我认为它值得发布。 –

+0

好的,他们指着同一个对象,但是当我做了这个b =“qwe”;? (我想在这一刻我用qwe创建一个新对象) –

0

这必须是大量的问题的重复,但我会发表评论说当你执行以下操作时:

String a = "abc"; 
String b = "abc"; 

JVM创建一个单个常量池中包含字符串abc的字符串对象。因此,ab字符串只是指向池中的相同字符串。

但是,当你做到以下几点:

String a = "abc"; 
String b = new String("abc"); 

即使abc已经存在于池中创建新对象。因此比较a == b返回false,尽管这两个字符串的内容仍然是等价的。

+0

评论,downvotes?说些什么_。 –

+0

补充说明:在Java中,'=='比较内存位置,'equals()'比较字符串的内容。 – GingerDeadshot

相关问题