【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 中最直观且推荐的方式。
相关推荐
用户37215742613512 分钟前
使用 Java 删除 Word 文档中的水印
java
艾斯比的日常13 分钟前
Java 三色标记算法:并发垃圾回收的核心技术解析
java·开发语言·算法
空空kkk25 分钟前
MyBatis——代理Dao方式的增删改查操作
java·数据库·mybatis
Seven9734 分钟前
线性数据结构
java
带刺的坐椅37 分钟前
Solon 不依赖 Java EE 是其最有价值的设计!
java·spring·web·solon·javaee
青云交41 分钟前
Java 大视界 -- 基于 Java 的大数据分布式存储在数字媒体内容存储与版权保护中的应用
java·性能优化·区块链·分布式存储·版权保护·数字媒体·ai 识别
踢球的打工仔1 小时前
PHP面向对象(5)
android·java·php
Rover.x1 小时前
错误:找不到或无法加载主类 @C:\Users\AppData\Local\Temp\idea_arg_file223456232
java·ide·intellij-idea
4***17271 小时前
使用 java -jar 命令启动 Spring Boot 应用时,指定特定的配置文件的几种实现方式
java·spring boot·jar
CoderYanger1 小时前
优选算法-字符串:63.二进制求和
java·开发语言·算法·leetcode·职场和发展·1024程序员节