【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 中最直观且推荐的方式。
相关推荐
BillKu2 小时前
推荐 Eclipse Temurin 的 OpenJDK
java·ide·eclipse
Morri32 小时前
[Java恶补day53] 45. 跳跃游戏Ⅱ
java·算法·leetcode
悟能不能悟2 小时前
eclipse怎么把项目设为web
java·eclipse
乂爻yiyao2 小时前
java 代理模式实现
java·开发语言·代理模式
2301_770373732 小时前
Java集合
java·开发语言
哈喽姥爷2 小时前
Spring Boot---自动配置原理和自定义Starter
java·spring boot·后端·自定义starter·自动配置原理
老华带你飞4 小时前
考研论坛平台|考研论坛小程序系统|基于java和微信小程序的考研论坛平台小程序设计与实现(源码+数据库+文档)
java·vue.js·spring boot·考研·小程序·毕设·考研论坛平台小程序
CHEN5_024 小时前
leetcode-hot100 11.盛水最多容器
java·算法·leetcode
songx_994 小时前
leetcode18(无重复字符的最长子串)
java·算法·leetcode
在路上`5 小时前
前端学习之后端java小白(三)-sql外键约束一对多
java·前端·学习