2015-01-16 81 views
-2
public class SubString1 
{ 
public static void main(String[] args) 
{ 
String s="Sachin"; 
String sb=s+"Tendulkar"; 
String sbc="SachinTendulkar"; 
System.out.println(sb==sbc); 
} 
} 

输出:错误。当通过串联字符串变量和字符串创建String对象时?

请解释输出是错误的?

我无法理解这种类型的对象创建背后的逻辑。根据我两个都应该参考同一个实例和答案应该是真实的。 请说明。

+0

您如何理解对象内存? – Loc

+1

也许[this](http://stackoverflow.com/questions/15427599/a-confusion-about-java-string-literal-pool-and-strings-concatenation)是一个更好的重复。 –

+0

注意,如果你说'final String s =“Sachin”;'结果变成'true'。但是你仍然不应该使用'=='比较字符串。 – ajb

回答

0

它们是不同的对象引用。 Java中的字符串是不可变的。

如果要比较字符串的实际内容,请使用.equals方法。

+0

我想了解它背后的逻辑。我同意你应该将字符串与equals()方法进行比较。 –

+0

请解释一下逻辑,它是如何在java中发生的? –

+0

@Randhishkumar逻辑就是代码的执行完全如您所见。与==运算符相比,在幕后没有隐藏机制导致'sb'奇迹般地等于'sbc'。如果您认为有,请告诉我们您的想法。这是一个很差的面试问题,而不是面试官表现出很强的能力或真正的兴趣。 – EJP