C++中的 NULL 和 Java 中的 null 有什么区别?
我一直在试图弄清楚为什么C++让我疯狂打字。前几天突然袭击了我。多年来,我一直在Java中键入(小写)。突然间,我开始用C++编程,那一小块肌肉记忆让我发疯。NULL
null
Wikiperipatetic将C++ NULL定义为stddef的一部分:
展开为空指针常量的宏。它可以被定义为((void*)0),0或0L,具体取决于编译器和语言。
Sun的文档告诉我关于Java的“空文字”:
null 类型有一个值,即 null 引用,由文本 null 表示,该值由 ASCII 字符组成。空文本始终为空类型。
所以这一切都非常好。我知道什么是空指针引用,并感谢您的编译器注释。现在我对Java中文字的想法有点模糊,所以我继续阅读...
文本是固定值的源代码表示形式;文本直接在代码中表示,无需计算。
还有一个特殊的 null 文本,可用作任何引用类型的值。null 可以分配给任何变量,但基元类型的变量除外。对于空值,除了测试其是否存在之外,您几乎无能为力。因此,null 在程序中通常用作标记,以指示某些对象不可用。
好吧,所以我想我现在明白了。在C++ NULL 是一个宏,在编译时,其计算结果为空指针常量。在Java中,null是一个固定值,任何非原语也可以分配;非常适合在方便的测试中进行测试。if statement
Java没有指针,所以我可以理解为什么它们将null保持为一个简单的值,而不是任何花哨的东西。但是为什么java决定将所有大写的NULL
更改为null呢
?
此外,我在这里错过了什么吗?