1

这是我的代码:

Log.d("inf", loader);
if (loader == "Klasse"){
    Log.d("inf", "Klasse yes");
    OPTS = new String[] { //Something };
} else {
    Log.d("inf", "Klasse no");
    OPTS = new String[] { //Something };
}

在第一行中,输出正好是“Klasse”,但下一个输出每次都是“Klasse no”。loader String 设置如下:

String loader = "";
Bundle exta = getIntent().getExtras();
    if(exta !=null) {
        try {
            json = new JSONObject(exta.getString("json"));
            loader = exta.getString("order");
        } catch (JSONException e) {
            e.printStackTrace();
        }
    }

你们有什么想法吗?

4

4 回答 4

11

==比较运算符比较引用而不是值。您需要比较这些值,因此需要使用该equals()方法。

if (loader.equals("Klasse"))
于 2012-05-13T19:26:18.383 回答
0

==恒等式 ( ) 和等式 ( )是有区别的equals()。身份测试对象指针是否相同,因此几乎永远不会是正确的。平等测试对象“值”是否相同,所以它几乎总是你需要的。

于 2012-05-13T19:27:39.013 回答
0

字符串比较应始终使用 equals 方法进行。

if(loader.equals("Klasse")) { .... }

这是因为 String 是一个类,通过使用 '==' 你可以检查它们是否是同一个对象,它们不是。Equals 检查您正在比较的字符串是否相等。

于 2012-05-13T19:29:12.540 回答
0

如果 == 或 === 不起作用,请使用 .equals

于 2012-05-13T23:28:14.700 回答