用于设置 True 或 false 的 Java 三元运算符

2022-09-03 08:41:06

我正在尝试设置一个条件并设置真或假,如下所示,但它始终返回假。

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

答案 1

它始终返回,因为您比较的是引用,而不是字符串。你的意思可能是这样的: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));

答案 2

使用而不是equals==

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