Java三元运算符设置为True或false

Har*_*M V 13 java ternary-operator

我试图设置一个条件,并设置如下所示的true或false,但它始终返回false.

boolean checked = (categoriesCursor.getString(3) == "1") ? true
                    : false;

Log.i("Nomad",categoriesCursor.getString(3)+ " "+checked);
Run Code Online (Sandbox Code Playgroud)

当我尝试输出值时,我得到以下内容.

01-12 00:05:38.072: I/Nomad(23625): 1 false
01-12 00:05:38.072: I/Nomad(23625): 1 false
01-12 00:05:38.072: I/Nomad(23625): 1 false
01-12 00:05:38.072: I/Nomad(23625): 1 false
01-12 00:05:38.072: I/Nomad(23625): 1 false
01-12 00:05:38.072: I/Nomad(23625): 0 false
01-12 00:05:38.072: I/Nomad(23625): 0 false
Run Code Online (Sandbox Code Playgroud)

K-b*_*llo 39

它会一直返回false,因为您正在比较引用,而不是字符串.你可能意味着:

boolean checked = (categoriesCursor.getString(3).equals("1")) ? true
                : false;
Run Code Online (Sandbox Code Playgroud)

这碰巧与此相当:

boolean checked = categoriesCursor.getString(3).equals("1");
Run Code Online (Sandbox Code Playgroud)

如果categoriesCursor.getString(3)可能的话null,你会更安全地这样做:

boolean checked = "1".equals(categoriesCursor.getString(3));
Run Code Online (Sandbox Code Playgroud)

  • @HarshaMV:它检查`"1"`是否_equal_到你从光标得到的_string_. (3认同)
  • @HarshaMV:Java有字符串常量,它们表现为String对象; `String`类可用的所有方法也可用于`String`常量. (2认同)