[英]Java string comparison not working as intended
過去,我已經在Java中做了很多字符串比較,但是這次似乎不起作用。
我知道一個事實,您必須使用.equals()
函數才能比較Java中的字符串。
為了找出問題所在,我編寫了以下代碼段:
Log.e("testLogic", String.valueOf(taken.getText().toString().trim().equals('1'))); Log.e("testValue", taken.getText().toString().trim());
產生以下結果:
E/testLogic﹕ false
E/testValue﹕ 1
E/testLogic﹕ false
E/testValue﹕ 1
E/testLogic﹕ false
E/testValue﹕ 0
這似乎很奇怪,因為前兩個“ testLogic”日志應該產生true。
該代碼用於自定義列表適配器(如果有任何含義)。
/米克爾
這是因為您沒有比較2個Strings
。 您必須這樣說:
Log.e("testLogic", String.valueOf(taken.getText().toString().trim().equals("1")));
因為.equals()
函數需要兩個Strings
。 假設s1
和s2
是Strings
,則應該執行以下操作:
s1.equals(s2);
希望對您有幫助!
.equals()
來自Object
類。 每個類都從Object
類繼承它。 String
類也從Object
類繼承它,並像這樣覆蓋它-
public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
if (anObject instanceof String) {
String anotherString = (String)anObject;
int n = count;
if (n == anotherString.count) {
char v1[] = value;
char v2[] = anotherString.value;
int i = offset;
int j = anotherString.offset;
while (n-- != 0) {
if (v1[i++] != v2[j++])
return false;
}
return true;
}
}
return false;
}
而且String
沒有char
的equals
方法的任何重載版本。 您可以看到String
的.equals()
方法是否接受任何對象,但當它是任何類型而不是String
時,它返回false
。 僅當提供的參數為String
類型且有意義地等於時,它才返回true
。 所以你必須寫-
Log.e("testLogic",String.valueOf(taken.getText().toString().trim().equals("1")));
代替 -
Log.e("testLogic", String.valueOf(taken.getText().toString().trim().equals('1')));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.