在Java中,引用指的是什么?它是一个内存地址吗?Java引用是否等同于C++指针的取消引用?
换句话说,考虑以下内容:
Object o1 = new Object();
Object o2 = new Object();
o1 == o2
这个比较是否等同于在C++中比较两个指针?
o1 == o2
在Java中基本等同于在C/C++中比较两个指针。
但是,在Java中,引用和在C/C++中的指针有两个主要的区别,这些区别非常重要:
还有一个关于"引用"这个词的简短说明:C++拥有引用,它们的行为与C中的指针和Java中的引用都有很大不同(但我对C++的了解不足以告诉你具体细节)。
有关此问题的全面讨论,请参见程序员SE上的此相关问题。
关于压缩指针,允许64位JVM使用32位引用。
是的,引用基本上就是指针。顺便说一下,如果在空引用上调用一个方法,你会得到......一个NullPointerException。
需要注意的是,它不必是内存地址。在程序执行期间,给定对象可以存储在其他地方,仍然保持相同的引用。但是你不需要关心,因为在Java中不存在指针算术。
==
将通过比较所有相关字段来比较用户定义的值对象。因此,==
将不再仅仅是指针比较。 - undefined