2017-09-14 228 views
1

基本上,當我嘗試使用.equals將類與字符串進行比較時,它始終返回false。Java:如何將字符串與toString()的返回進行比較

例如:

myClass.java

public String toString() 
{ 
    return "Apple"; 
} 

main.java

System.out.println(myClass.equals("Apple")); 

將打印 「假」。

我應該用什麼來比較myClass和字符串?

+2

'myClass.toString()。equals(「Apple」)'。 –

+0

你想要比較什麼?課堂名稱或其他? 請用實例詳細說明,哪種情況是真的,哪種情況是錯誤的。 – Nin

+0

覆蓋方法'toString()'和'equals()'然後使用equal()進行比較 –

回答

2

你需要重寫定義形成Object類:

@Override 
public String toString() { 
    return "Apple"; 
} 

,然後比較

System.out.println(myClass.toString().equals("Apple")); 

其中myClass應使用code conventions一個的MyClass實例。

2

你應該調用toString,而不是直接class。

myClass mc= new myClass(); 
if(mc.toString().equals("Apple"){ 

} 

順便說一句,Java類名稱以Capitals開頭。例如。 MyClass

+0

我的實際類確實以captial開頭,這只是一個匆忙輸入的示例(對不起)。 這個作品謝謝!你知道我爲什麼需要這樣做,但是如果我打印課程,它會打印「Apple」? – Dasonic

+0

打印時,它會自動調用.toString(),但不會在其他位置調用。 –

0

我認爲toString會被自動調用的錯誤。

對於任何人想知道:

System.out.println(myClass.toString().equals("Apple")); 
0

試試這個辦法...對我的作品很好..

@Override 
    public String toString() { 
     return "Address: " + address+ ", streetName=" + stName ; 
    } 
1

你實際上可以實現相當於 -

public boolean equals(Object object) { 
    if(object instanceof String) { 
     return ((String)object).equals(mName); 
    } 
    return false; 
} 

MNAME是包含其名稱的類的成員。

相關問題