Java字符串比较无法正常工作

时间:2015-06-15 18:08:57

标签: java android



我过去在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

2 个答案:

答案 0 :(得分:2)

这是因为你没有比较2 Strings。你必须这样说:

Log.e("testLogic", String.valueOf(taken.getText().toString().trim().equals("1")));

因为.equals()函数需要两个Strings。假设s1s2Strings,您应该执行以下操作:

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