2013-10-10 82 views
1

我有一個問題類,其中包含一些屬性,包括位置名稱,它是字符串。我也有一個Location類,它具有一些屬性和名稱方法。我要檢查,如果兩者相等,這裏有一些方法和結果:兩個字符串不相等

Log.e("", question.getLocation() + ", size:" + question.getLocation().length()); 
Log.e("", mLocation.getLocationName() + ", size:" + mLocation.getLocationName().length()); 
Log.e("", "equals: " + question.getLocation().equalsIgnoreCase(mLocation.getLocationName())); 
Log.e("", "location equals self: " + mLocation.getLocationName().equalsIgnoreCase(mLocation.getLocationName())); 
Log.e("", "question location equals self: " + question.getLocation().equalsIgnoreCase(question.getLocation())); 

,這裏是日誌:

10-10 19:11:35.618 1893-1893/com.example E/﹕ Machine Room, size:12 
10-10 19:11:35.618 1893-1893/com.example E/﹕ Machine Room, size:12 
10-10 19:11:35.618 1893-1893/com.example E/﹕ equals: false 
10-10 19:11:35.618 1893-1893/com.example E/﹕ location equals self: true 
10-10 19:11:35.618 1893-1893/com.example E/﹕ question location equals self: true 

我不知道發生了什麼,以及爲什麼兩個字符串不等於?誰能告訴我?

public class Question { 
    ... 
    private String location; 

    public String getLocation() { 
    return location; 
    } 

    public void setLocation(String location) { 
    this.location = location; 
    } 

} 

public class Location { 
    ... 
    private String locationName; 

    public String getLocationName() { 
    return locationName; 
    } 

    public void setLocationName(String ln) { 
    locationName = ln; 
    } 
} 

他們只有getter和setter,他們沒有修改任何地方,所以沒有任何東西觸及日誌之間的兩個詞。

SOLUTION

由於RC在評論中提到: 轉儲上述兩個字符串作爲字節和比較,或許空間不是在字符串中的一個(空間ALT + 0160產生空間「極爲相象「在MSWindows下)

+2

您聲明「所以我對某些屬性有疑問,並且其位置名稱是String。」問題是否有Location對象和locationName屬性?如果是這樣的話,當你註銷它時,Location對象可能會顯示它的toString()方法,但比較結果是將位置對象與一個字符串對象進行比較? – Diver

+0

我根據所用的措辭和question.getLocation()調用詢問了上述問題。 – Diver

+0

@Diver好點。儘管'equalsIgnoreCase()'在將'location'與自身進行比較或拋出異常(可能是編譯時錯誤)時會給出'false'。 – iamnotmaynard

回答

-2

RC是絕對正確的! 字符串轉換通過使用的getBytes()方法 到字節數組然後通過使用滿足Arrays.equals比較字節陣列對象(字節[],字節[]); 這是最好的posibile解決方案。

+0

這不會產生不同的結果。另外,由於系統標準編碼可能無法映射所有java字符和分隔符,因此no-arg'getBytes()'容易出錯。 – afk5min