C/C++的指針,能夠稱之爲彙編時代的產物,其基本思想是使用「地址編號」對內存進行操做。加上了型別信息後及運算符經重載,「地址編號」升級成爲「指針」,咱們能夠利用指針對一片內存區作「受限」的操做,這對於彙編語言而言,是在下降靈活性的基礎上增長了操做的方便性,人類從脫離機器思惟的角度上前進一大步。從而也衍生出了「數組和字符串」這樣的C語言概念類型,之因此稱之爲概念,也僅僅是由於這兩者自己就是一片有指針的內存區域而已。java
C++的引用,指針操做充滿了風險,最有經驗的程序員對於指針的調試也十分頭疼。「引用」的出現使用指針的操做工做變得「脫離機器化」(實質上在編譯器級別,其仍然轉化成爲指針)。程序員
java的引用,"C++引用"雖然擺脫了指針的複雜性,但同時也喪失了指針的靈活特性,好比引用必須初始化、一經初始化後就不能指向到其它內存上。這給編程者帶來了沒必要要的困擾。java的引用具有C++引用的基本特性,但同時具有自身的特色:編程
一、內存分配在方法棧中(C++能夠在棧中也能夠在堆中)數組
二、引用自己並非對象,其只是指向到堆區對象的鑰匙。ide
三、能夠是空引用,也能夠任意指向其聲明類型或聲明類型的子類型對象上。指針