学过Java的都知道,Java中并无指针这一功能。但有一个和它很像的概念,即“引用”。程序员
说它们很像是由于二者都指向一片内存地址,但实际在概念和做用上仍是有很大的区别。函数
先来讲一说指针吧,指针的引入是C的神来之笔,有人说C语言的所有精华就是指针。指针表明一个“对象或函数”的“地址和类型”。在内存级别上进行操做,它的好处一方面能够申请不连续的数据存储空间按需索取,另外运算也更加快速。但缺点是操做不当或程序员在设计程序上的隐氏错误会形成内存混乱,程序崩溃。spa
因此Java没有指针这个概念,更准确的说是弱化指针概念让你们努力忘掉指针这一律念,而突出了引用。设计
由于引用关乎Java的”万事万物即对象“的思想。引用变量(常缩写为引用)存储对对象的引用,实际对象存储在内存中的某处,而引用变量存储对象的内存地址。指针
引用变量将永远保存一些对象所存储的内存地址,除非引用变量当前没有引用任何对象。在这种状况下引用变量将存储空引用,即null。另外Java不容许引用基本变量。而对于指针来讲,若是没有初始化就是非法的。对象
引用不能够计算,而指针能够,好比进行++运算。内存
总的说来Java的引用于C++的引用是有区别的,在功能上更接近于C++的指针。变量