[英]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.