Java引用类型与指针的前世今生

学过Java的都知道,Java中并没有指针这一功能。但有一个和它很像的概念,即“引用”。

 

说它们很像是因为两者都指向一片内存地址,但实际在概念和作用上还是有很大的区别。

 

先来说一说指针吧,指针的引入是C的神来之笔,有人说C语言的全部精华就是指针。指针代表一个“对象或函数”的“地址和类型”。在内存级别上进行操作,它的好处一方面可以申请不连续的数据存储空间按需索取,另外运算也更加快速。但缺点是操作不当或程序员在设计程序上的隐氏错误会造成内存混乱,程序崩溃。

 

所以Java没有指针这个概念,更准确的说是弱化指针概念让大家努力忘掉指针这一概念,而突出了引用。

 

因为引用关乎Java的”万事万物即对象“的思想。引用变量(常缩写为引用)存储对对象的引用,实际对象存储在内存中的某处,而引用变量存储对象的内存地址。

 

引用变量将永远保存一些对象所存储的内存地址,除非引用变量当前没有引用任何对象。在这种情况下引用变量将存储空引用,即null。另外Java不允许引用基本变量。而对于指针来说,如果没有初始化就是非法的。

 

引用不可以计算,而指针可以,比如进行++运算。

总的说来Java的引用于C++的引用是有区别的,在功能上更接近于C++的指针。

 

posted @ 2017-11-25 16:30  vhuwdnaj  阅读(507)  评论(0编辑  收藏  举报