2015-01-16 79 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