Jon*_*eet 17
引用有点像你不能算术的指针......尽管它更不透明.虽然底层位可能是虚拟内存中的地址,但它们不一定是.它们只是获取对象(或表示空值)的一种方式.因此,虽然它们并不完全相同,但如果您习惯将指针视为"识别对象或导航到它的方式"(在某种意义上),那么是的,这些想法也适用于引用.
Java没有这样的指针(不像C#,它有引用和指针 - 后者用于"不安全"代码).
wbe*_*rry 11
术语"参考"和"指针"基本相同.我见过的关于Java基础知识的大部分文献都声称Java没有指针.但是,如果你尝试使用null引用,你会得到一个NullPointerException.所以它都是语义学.
(真正的区别在于,在C或C++中,术语"指针"严格意味着一个恰好是某些数据的内存地址的整数.而在Java中,术语"引用"更接近于C++"引用"概念.您可以即使你想要,也直接使用内存地址,但你以同样的方式使用它.)
Cat x = new Cat();
Run Code Online (Sandbox Code Playgroud)
这一行在内存中创建了一个 Cat 对象,并将对它的引用存储在 x 中。
x 现在包含对 Cat 对象的引用,但如果您要这样做:
x = x + 1;
Run Code Online (Sandbox Code Playgroud)
这不会像在 C 中那样给出下一个内存地址,但会给出编译器错误。Java 不允许控制引用或内存位置。
| 归档时间: |
|
| 查看次数: |
15533 次 |
| 最近记录: |