Android逻辑操作&&?

use*_*389 2 java android

这个已经让我适应了一个多小时...我可以发誓代码是对的.我错过了什么吗?

if((fType != "EXACT") && (dateTime > System.currentTimeMillis())){ 
    myIntent = new Intent(getBaseContext(), MyScheduledReceiver1.class);                        
} else {
    myIntent = new Intent(getBaseContext(),MyScheduledReceiver2.class);
}
Run Code Online (Sandbox Code Playgroud)

即使它String fType是"完全" long dateTime并且将来......它仍然在调用MyScheduledReceiver1.class ...当1为假时它应该调用MyScheduledReceiver2.class.

Jon*_*eet 12

这个问题可能是,你比较字符串引用而不是比较值的字符串:

if (!fType.equals("EXACT") && dateTime > System.currentTimeMillis()) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

现在将调用equals字符串上的方法,它将比较两个字符序列是否相等,而不仅仅是fType和是否"EXACT"引用完全相同的String对象.

(如果fType为null,则抛出异常;如果您希望它不匹配则可以使用if (!"EXACT".equals(fType) && ...)- 这取决于具体情况.)