【hot100】bug指南记录1

之前学了一阵C++,还是更熟悉C++的语法呀,转Java还有点不适应........

这个系列纯纯记录自己刷题犯的愚蠢的错误......hhhh,我是人,one 愚蠢的码人......

巩固巩固基础好吗?!编程菜鸟.......hhh,又是被自己蠢到的一天......

真的基础基础再基础的Java语法bug了.......实践出真知啊,给我写,写不死就往死里写.....

Q:Java代码 :为什么if(!cur) return; 报错, 而 if(cur==null) return; 却可以?

在 Java 中,if (!cur) return; 会报错的原因是 语法不符合 Java 的语言规范 ,而 if (cur == null) return; 是合法的。

1. if (!cur) return; 为何报错?

原因:

  • Java 没有逻辑非(!)操作符用于对象引用

    • 在 Java 中,! 是用于布尔值的逻辑非操作符(例如:boolean flag = true; if (!flag) ...)。

    • cur 是一个对象引用(例如 TreeNode cur),而不是布尔值,因此不能直接对 cur 使用 !

    • !cur 的语法是错误的,因为 Java 编译器无法将对象引用(TreeNode 类型)隐式转换为布尔值。

对比 C/C++:

  • C/C++ 允许将指针隐式转换为布尔值(例如:if (!cur) 表示检查指针是否为 NULL)。

  • 但 Java 严格禁止这种隐式转换 ,必须显式检查对象是否为 null

2. if (cur == null) return; 为何正确?

原因:

  • Java 中的对象引用检查必须显式使用**==!=**操作符

    • cur == null 是合法的语法,表示检查 cur 是否为 null(即未指向任何对象)。

    • 这是 Java 中检查空指针的标准方式。

3. 总结

语法 是否合法 说明
if (!cur) return; Java 不允许对对象引用使用 ! 操作符。
if (cur == null) return; Java 中检查对象是否为 null 的标准方式。

4. 扩展建议

  • 避免空指针异常(NullPointerException):

    • 在访问对象的方法或属性前,始终检查是否为 null

    • 使用 Java 8 的 Optional 类(例如:Optional.ofNullable(cur).ifPresent(...))可以更优雅地处理空值。 (小小的脑袋大大的问号,没用过呀?不懂!!!)

  • 代码规范:

    • 显式的 null 检查(如 cur == null是 Java 中最直观且推荐的方式。
相关推荐
舟舟亢亢15 分钟前
Java集合笔记总结
java·笔记
小酒窝.34 分钟前
【多线程】多线程打印ABC
java
乡野码圣1 小时前
【RK3588 Android12】RCU机制
java·jvm·数据库
JAVA+C语言1 小时前
如何优化 Java 多主机通信的性能?
java·开发语言·php
编程彩机2 小时前
互联网大厂Java面试:从分布式架构到大数据场景解析
java·大数据·微服务·spark·kafka·分布式事务·分布式架构
小酒窝.2 小时前
【多线程】多线程打印1~100
java·多线程
君爱学习3 小时前
基于SpringBoot的选课调查系统
java
APIshop3 小时前
Java 实战:调用 item_search_tmall 按关键词搜索天猫商品
java·开发语言·数据库
血小板要健康3 小时前
Java基础常见面试题复习合集1
java·开发语言·经验分享·笔记·面试·学习方法
淼淼7633 小时前
安装jdk1.8
java·开发语言