之前学了一阵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. 总结
| 语法 | 是否合法 | 说明 |
|---|---|---|
|
| ❌ | Java 不允许对对象引用使用 |
|
| ✅ | Java 中检查对象是否为 |
4. 扩展建议
-
避免空指针异常(NullPointerException):
-
在访问对象的方法或属性前,始终检查是否为
null。 -
使用 Java 8 的
Optional类(例如:Optional.ofNullable(cur).ifPresent(...))可以更优雅地处理空值。 (小小的脑袋大大的问号,没用过呀?不懂!!!)
-
-
代码规范:
-
显式的
null检查(如cur == null)是 Java 中最直观且推荐的方式。
-
