在我看來,這if
語句不起作用。java if語句錯誤
我在Java的新的,但是我知道C#和C++相當好,但我從來沒有見過這樣的事:
today=edit[0].substring(0,10);
if (today == edit[0].substring(0,10))
{
pars_prog.addView(name_prog[i]);
}
而且它不會進入IF
功能?
Are if語句與Java(Android)不同嗎?
在我看來,這if
語句不起作用。java if語句錯誤
我在Java的新的,但是我知道C#和C++相當好,但我從來沒有見過這樣的事:
today=edit[0].substring(0,10);
if (today == edit[0].substring(0,10))
{
pars_prog.addView(name_prog[i]);
}
而且它不會進入IF
功能?
Are if語句與Java(Android)不同嗎?
當您使用==
爲任何對象引用(不管是字符串或者任何其他非基本類型),它只是比較引用是否相等 - 即是否他們指的是完全相同的對象,或者它們是否都是null。
在這種情況下,您需要確定字符串是否爲等於 - 即它們是否代表相同的字符序列。您應該使用該equals
方法:
if (today.equals(edit[0].substring(0,10)))
然而,一般做這個的時候你要小心的是,equals
調用的目標就是非空的,否則你會得到一個NullPointerException
。
注意,C#是相似 - 除了將==
操作者可以被重載,並被重載string
。如果操作數的編譯時類型是不能同時string
,你仍然會得到引用比較:
object text1 = new StringBuilder("hello").ToString();
object text2 = new StringBuilder("hello").ToString();
Console.WriteLine(text1 == text2); // False
謝謝你隊友,這正是我一直在尋找的 – MBP
你有比較字符串時使用equals方法..現在你是比較參考,這就是爲什麼你從來沒有進入if塊
您正試圖==
比較字符串,這是身份比較 - 它將檢查這兩者是否是相同的實例(在JVM中)而不是比較它們的內容。
改爲使用today.equals(..)
。
也就是說,如果出現您正在處理日期,那麼String
不是處理此問題的最佳方法。使用Calendar
,Date
(有點過時)或喬達時間DateTime
我不事這得到你的問題,但仍然是不好的做法,使用==那裏的操作員如果(今天。equals(編輯[0] .substring(0,10)) – emory
這不是'if'的工作方式不同,它是String對象(因此也是'==')。 '.equals()' – Nanne
從你的編碼我將你最好的編碼器在這個宇宙.. – K6t