到目前为止,这是我的代码:
ArrayList<String> matches = data
.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
String playString = "play";
if( matches.get(0).toString() == playString)
{
// do something
}
语音识别提示就好了,我已经对它进行了测试,实际上我知道我说的是“播放”这个词。但是,在if语句中进行比较时,每次都会失败 - 有或没有toString()
。我不理解的是什么?
答案 0 :(得分:4)
回答 为什么 运算符==,测试两个对象引用变量是否引用对象的完全相同的实例。
方法.equals(),测试两个对象是否相互比较 - 但它们不必是同一对象的完全相同的实例。
示例#1:
Integer i = new Integer(10);
Integer j = i;
在上面的代码中。 i == j为真,因为i和j都指向同一个对象。
示例#2:
Integer i = new Integer(10);
Integer j = new Integer(10);
在上面的代码中,i == j是假的,因为尽管它们都具有值10,但它们是两个不同的对象。
另外,在上面的代码中,iequals(j)是正确的,因为虽然它们是两个不同的对象,但它们相当于它们代表相同的数字,10。
答案 1 :(得分:2)
而不是像==
那样使用if( matches.get(0).toString() == playString)
使用.equals()
之类的:if( matches.get(0).toString().equals(playString)