2012-02-09 91 views
0

這裏是我的問題的代碼要點:爲什麼不extra.getString()==「編輯」工作,但extra.getInt()== 1工作?

String from = extra.getString("from"); 
Log.d("Cat", from); //debugs as edit 
if(from == "edit") { 
    Log.d("Cat", "Edit"); 
} else { 
    Log.d("Cat", "Not Edit"); 
} 

它會去爲「未編輯」

在調用活動我

cIntent.putExtra("from", "edit"); 
startActivity(cIntent); 

如果我改變了這一切達getInt並傳遞1,它作爲Edit進行調試,如果傳遞2,則調試爲Not Edit。

我不明白髮生了什麼事。如果我需要,我可以忍受它,但我覺得我在這裏錯過了一些非常基本的東西。

謝謝。

回答

1

使用equals方法:

if(from.equals("edit")) { 
    Log.d("Cat", "Edit"); 
} else { 
    Log.d("Cat", "Not Edit"); 
} 
+0

這是這麼久以來我已經採取任何Java類。等於簡單地跨過了我的腦海,但後來消失了。感謝這個例子。 – spuppett 2012-02-09 04:37:57

+0

來自C#背景,我剛剛在我的桌面上敲了一下我的頭,而不是3個小時前,在濫用我的機器人的同時,在這個問題上。 – 2012-02-09 04:59:03

+0

僅供參考:使用https://github.com/beplaya/Wagon爲您的演員。方式更容易。 – beplaya 2014-03-18 19:46:07

2

在Java中,你需要按如下方式比較字符串,

if(from.equal ("edit")) 
{ 
    Log.d("Cat", "Edit"); 
} 
else 
{ 
    Log.d("Cat", "Not Edit"); 
} 

「==」 是用來比較的對象,而不是值。

0

在Java當比較使用==,它比較對象之間的參考ID(指針)。 對於像int這樣的數字對象,它的值就是id。 但是,對於字符串,兩個相同的字符串可能具有不同的ID。所以當你使用==比較它們時,它會返回false,因爲它是不同的對象。

如果您使用firstString.equal(secondString)的排序,它將採用該字符串的值並使用它進行比較。

希望這回答你的問題,長話短說永遠不會比較字符串使用==。

0

比較字符串時,應使用str.equalsIgnoreCase(String s)因爲equals方法主要用來比較的對象,而且在某些情況下,它不能比較兩個完全一樣的字符串,因爲它應該

相關問題