2013-01-17 60 views
0

Screencap值比較困惑我,不能正常工作

我比較兩個字符串,顯然他們不是平等的,但他們。我想知道有哪些問題可能會導致這種情況,可能是數據類型,隱藏的東西,我看不到,或什麼。任何輸入可能會有所幫助。謝謝。

+0

你**不**做價值比較;應用於對象的'=='運算符確實是* reference *比較 - 如果它們是完全相同的對象,它將只返回true。 –

回答

2

字符串/對象比較應該使用equals(),不==(節選字符串文字比較的情況下)

實施例:

if(string.equals(string2)){ 
} 

==檢查引用相等,equals()檢查的內容相等。閱讀此discussion

+1

只需添加到:==檢查對象的引用是否相等,.equals()檢查字符序列相等 –

+0

謝謝大家。這對於C++來說也是如此,或者是Java特定的? –

+0

@ user1582340:不知道C++,但它在Java中是真實的,在.NET中不是這樣。 – kosa

1

使用.equals()方法檢查字符串相等field1.equals("formDateCreated")==運算符只是檢查兩個引用變量是否指向同一個字符串實例。 equals()方法檢查兩個字符串是否有意義相等。

1
equalsIgnoreCase(String anotherString) 

,以便您在不考慮有關情況。這種檢查的天氣裏串含量等於沒有這==

我建議你檢查像波紋管

"formDateCreated".equalsIgnoreCase(field) 

因此,它可以幫助你克服可能的NullPointerException參考

2
field.trim().equalsIgnoreCase("formDateCreated") 

嘗試這個。 String trim()方法返回字符串的副本,省略前導和尾隨空白。

+0

「formDateCreated」.trim()不需要在這裏修剪,因爲這裏沒有空格 – Suranga

+0

是的,我知道但可能是user1582340因此而出現問題。 –

+0

沒有修剪是注意到這個問題。但是你不需要trim()這個「formDateCreated」 – Suranga