Java引用類型與指針的前世此生

學過Java的都知道,Java中並無指針這一功能。但有一個和它很像的概念,即「引用」。程序員

 

說它們很像是由於二者都指向一片內存地址,但實際在概念和做用上仍是有很大的區別。函數

 

先來講一說指針吧,指針的引入是C的神來之筆,有人說C語言的所有精華就是指針。指針表明一個「對象或函數」的「地址和類型」。在內存級別上進行操做,它的好處一方面能夠申請不連續的數據存儲空間按需索取,另外運算也更加快速。但缺點是操做不當或程序員在設計程序上的隱氏錯誤會形成內存混亂,程序崩潰。spa

 

因此Java沒有指針這個概念,更準確的說是弱化指針概念讓你們努力忘掉指針這一律念,而突出了引用。設計

 

由於引用關乎Java的」萬事萬物即對象「的思想。引用變量(常縮寫爲引用)存儲對對象的引用,實際對象存儲在內存中的某處,而引用變量存儲對象的內存地址。指針

 

引用變量將永遠保存一些對象所存儲的內存地址,除非引用變量當前沒有引用任何對象。在這種狀況下引用變量將存儲空引用,即null。另外Java不容許引用基本變量。而對於指針來講,若是沒有初始化就是非法的。對象

 

引用不能夠計算,而指針能夠,好比進行++運算。內存

總的說來Java的引用於C++的引用是有區別的,在功能上更接近於C++的指針。變量

相關文章
相關標籤/搜索