我过去在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”#39;日志应该生成真实。
如果代码有任何意义,代码将在自定义列表适配器中使用。
/的Mikkel
答案 0 :(得分:2)
这是因为你没有比较2 Strings
。你必须这样说:
Log.e("testLogic", String.valueOf(taken.getText().toString().trim().equals("1")));
因为.equals()
函数需要两个Strings
。假设s1
和s2
为Strings
,您应该执行以下操作:
s1.equals(s2);
我希望它会对你有所帮助!
答案 1 :(得分:0)
4096
来自.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
的{{1}}方法的任何重载版本。您可以看到equals
的{{1}}方法是否包含任何对象,但当它是任何类型而不是char
时,它会返回String
。如果提供的参数类型为.equals()
且有意义等于,则它仅返回false
。所以你必须写 -
String
而不是 -
true