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

时间:2013-01-11 18:38:31

标签: java ternary-operator

我正在尝试设置条件并设置true或false,如下所示,但它始终返回false。

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

Log.i("Nomad",categoriesCursor.getString(3)+ " "+checked);

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

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

7 个答案:

答案 0 :(得分:39)

它始终返回false因为您正在比较引用,而不是字符串。你的意思可能是:

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

这恰好相当于:

boolean checked = categoriesCursor.getString(3).equals("1");

如果categoriesCursor.getString(3)可能是null,那么这样做会更安全:

boolean checked = "1".equals(categoriesCursor.getString(3));

答案 1 :(得分:3)

使用equals代替==

boolean checked = (categoriesCursor.getString(3).equals("1"));

答案 2 :(得分:3)

尝试使用此

(categoriesCursor.getString(3).equals("1")) ? true : false;

答案 3 :(得分:1)

使用categoriesCursor.getString(3).equals("1")代替==

答案 4 :(得分:1)

首先,要比较字符串,您必须使用equals方法:

categoriesCursor.getString(3).equals("1")

其次,这里不需要三元运算符。 equals已经导致布尔值,所以只需指定它:

boolean checked = categoriesCursor.getString(3).equals("1");

答案 5 :(得分:1)

将其更改为:

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

不要使用==来比较字符串内容。

注意:无法在JAVA中重载或修改==运算符。如果您使用object1 == object2,其中object1object2是字符串或任何其他对象,您将检查引用是否指向相同的基础对象。这不会比较内容。

答案 6 :(得分:1)

首先,不需要三元运算符。然后,您必须使用equals()代替==。因为==运算符检查对象的引用是否相等。