不寻常的Android逻辑运算符不工作比较两个字符串

时间:2012-09-13 18:37:25

标签: android string compare logic operator-keyword

我正在尝试一个简单的检查。如果字符串名称locale将“es”作为值。

public String locale = 
    Locale.getDefault().getLanguage().toLowerCase().toString();

// ...

Log.v(tag, "Idioma del sistema: «" + locale +"»");
if (locale != "es") {
    showDialog(R.string.warningTitleDialog, 
        "We are sorry that this tool is only available in Spanish " +
        "language. See Author menu item for more information. [" + 
        locale + "]");
    locale = "en";
}

adb logcat将“es”显示为字符串“locale”的内容,但条件中的代码正在执行。

2 个答案:

答案 0 :(得分:2)

似乎问题不在于Android或逻辑,而是在JAVA中。 试试这个并告诉我们发生了什么

if(!locale.equals("en"))
{
   //Your Code
}

答案 1 :(得分:2)

永远不要使用!=或==与字符串相关联。尝试等于这样的方法:

if(locale.equals("es"))

如果字符串locale和“es”包含相同的字符,则返回true 序列。因为equals()方法比较String对象内的字符。 ==运算符比较两个对象引用以查看它们是否引用相同的实例。

有关详细信息,请参阅What is the difference between == vs equals() in Java?