【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 中最直观且推荐的方式。
相关推荐
头发还在的女程序员5 小时前
医院陪诊管理系统怎么选择?——2026 年选型避坑与架构参考
java·开发语言·陪诊系统·陪诊app·医院陪诊陪护
CodeStats5 小时前
【Spring事务】Spring事务注解 @Transactional 完整体系:从 MySQL 隔离级别到 MyBatis 原理详解
java·spring·mybatis·事务·transactional
我命由我123456 小时前
Android 开发问题:为 PDFView 设置一个带有黑色边框的背景 drawable,但边框没有生效
android·java·java-ee·android studio·android jetpack·android-studio·android runtime
都叫我大帅哥8 小时前
从Python到Java:为什么企业级Agent最终会选择Java?
java·ai编程
wanderist.8 小时前
Lambda表达式在算法竞赛中的应用
java·开发语言·算法
腻害兔9 小时前
【若依项目-产品经理视角】RuoYi-Vue-Pro 源码拆解:IM 即时通讯模块,一个被低估的「全功能聊天系统」
java·前端·vue.js·产品经理·ai编程
心念枕惊10 小时前
.NET CORE 授权进阶-角色、策略与动态权限实现
java·前端·.netcore
景同学11 小时前
把 AI 用到线上运维:可行、有效,前提是喂足信息——一次 Full GC 排障实录
java·人工智能·后端
C++、Java和Python的菜鸟12 小时前
第7章 后端Web实战(Tlias系统)
java
憧憬成为java架构高手的小白12 小时前
黑马八股--spring框架学习
java·学习·spring