關於Java中指針的探討

引用和指針還是差別的。
C中的指針還可以進行運算,比如p++,但Java中的引用絕對不可以。

java內部有,比如對象內部有指向方法的方法指針等,但java中不能直接操作指針,把指針的操作封裝了,比如封裝成引用,所以java的地址操作更加安全。

java的引用明明和指針沒什麼本質區別,java爲什麼還宣稱沒有指針並把這個當作語言的優點? 
java聲稱沒有指針,但給我的感覺是根本所有變量都是指針在控制,只不過很多指針的功能被限制了,這怎麼能算沒有指針呢?

java的引用是c/c++用指針實現的,但不是說java語言本身需要指針。
爲什麼java語言要用c/c++來實現?因爲這個語言是我們用的馮諾依曼結構計算機的直接映射。
爲什麼可以不用c/c++?因爲我們的應用可以跑在抽象結構上,這個結構上不需要指針。
還有不需要指針的結構嗎?當然,丘齊體系。
還有用c/c++(包括指針)實現的其他無指針的語言嗎?當然,python,haskell,ocaml。

補充:忘了說一句,指針在馮諾依曼結構上直接映射的是間接尋址(什麼是間接尋址?)

1: java有指針,在java中稱爲 引用。 所謂的引用就是內存地址的值。拿到該引用就相當 於得到了該內存處的對象。

2: java中可以使用指針(我們稱之爲引用),但不能修改引用。  如C++中可以 進行pointer++; 在java中是錯誤的。(Integer,Float等包裝類除外,因爲java有自動封箱、解箱特性)。  這就好比:在java中可以坐飛機到指定的目的地,但是你不能開飛機(安全)。但是在C++中可以自己開飛機(操作飛機)--具有危險性。


它沒有顯式的使用指針,其實Java語言內部的實現機制來說是肯定有指針的,用不用一樣東西是看有沒有必要去用。Java是一個純面向對象的語言,基本上來說,程序員不需要關心內存的分配與釋放的操作(jre、虛擬機幫忙做了),既然不關心內存那麼沒必要引入指針這麼種相對複雜而容易重大錯誤的一種形式。其實Java裏邊充斥着引用的說法,從某種角度上說,引用就是指針的簡化版。。。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章