【发布时间】:2012-12-26 09:56:16
【问题描述】:
我正在尝试设置条件并设置 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
【问题讨论】:
-
对您的代码的评论:您为什么在这里使用三元运算符?你可以说
boolean checked = "1".equals(categoriesCursor.getString(3)); -
对此处所有答案的评论:
"1".equals(categoriesCursor.getString(3));优于categoriesCursor.getString(3).equals("1"),因为出现 NullPointerException 的机会较少。 -
@DanielKaplan 哇。我不知道你可以做这样的事情:D
-
str.equals("literal")比"literal".equals(str)更好,因为包含null的与str相关的错误被捕获,并且更具可读性。 (另外? true : false是没有意义的——别管它了。)
标签: java ternary-operator