最近突然看到java单例模式的写法,用到了双检索+volatile去正确创建单例模式,突然想知道对象null的底层到底是比较的什么,如果按照重排的要求,可能会出现指向一个空地址,但是地址已经存在,那为什么是空?,想知道对象null究竟是比较的什么
去看JDK 或 openjdk源码了
或许是 C/C++ 写的
在Java中,使用 == 运算符比较两个对象时,实际上是比较两个对象的引用是否相同。如果两个对象的引用相同,则它们是同一个对象;否则它们是不同的对象,即使它们的内容完全相同。
如果一个对象的值为 null,则它的引用为空,也就是没有指向任何对象。当我们使用 == 运算符比较一个对象与 null 时,实际上是在比较这个对象的引用是否为空。如果这个对象的引用为空,则说明这个对象并没有指向任何对象,也就是它的值为 null。
因此,当我们将一个对象与 null 进行比较时,实际上是在判断这个对象是否为 null,也就是是否指向任何对象。如果这个对象为 null,则说明它的引用为空;否则它指向某个对象,它的值不为 null。