【发布时间】:2012-03-09 00:45:51
【问题描述】:
当我想打印我的一个对象(这显然不是空的)时,我遇到了一些奇怪的事情。
如果我使用这条线:
text.append("\n [ITEM ID]: " + (item == null ? (otherItem == null ? 0 : otherItem .getItems().get(i).getId()) : item .getItems().get(i).getId()));
如果我的item 对象是null,则没有空指针异常。当然这应该是例外的结果。但是如果我在没有() 标记的情况下使用它:
text.append("\n [ITEM ID]: " + item == null ? (otherItem == null ? 0 : otherItem .getItems().get(i).getId()) : item .getItems().get(i).getId())
我以为条件运算符不执行运算符的其他部分,但我得到了 NullPointerException。
如果有人向我解释一下,为什么在这种情况下必须使用 () 标记,我将不胜感激。
【问题讨论】:
-
运算符优先级的情况?
-
提示:
"\n [ITEM ID]: " + item变成...?
标签: java conditional-operator operator-precedence