三元运算符和意外的 NullPointerException

发布于 2024-12-16 16:15:43 字数 307 浏览 0 评论 0原文

有时我会从下面一行收到 NullPointerException

System.out.println("Date::"+ row != null ? row.getLegMaturityDate() : "null");

添加括号后就可以了。

System.out.println("Date::"+ (row != null ? row.getLegMaturityDate() : "null"));

请澄清我的行为。提前致谢。

I am getting NullPointerException from the below line sometimes.

System.out.println("Date::"+ row != null ? row.getLegMaturityDate() : "null");

After adding brackets, it is fine.

System.out.println("Date::"+ (row != null ? row.getLegMaturityDate() : "null"));

Please clarify me the behavior. Thanks in advance.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

美胚控场 2024-12-23 16:15:43

"Date::" + row 永远不会为空,尽管 row 有时是这样。

也就是说,"Date::"+ row != null 等价于 ("Date::"+ row) != null,后者始终为 true。

"Date::" + row is never null, although row sometimes is.

That is, "Date::"+ row != null is equivalent to ("Date::"+ row) != null which is always true.

当梦初醒 2024-12-23 16:15:43

这是一个运算符优先级的问题。 Christoffer Hammarström 有执行摘要。请参阅此页面 http://bmanolov.free.fr/javaoperators.php 了解更多详细信息。

It's a matter of operator precedence. Christoffer Hammarström has the executive summary. See this page http://bmanolov.free.fr/javaoperators.php for more detail.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文