Java的參數傳遞

Java作爲一種強大的編程語言被廣泛的應用爲服務器編程與手機應用編程上。

學習的過程中,我想絕大多數人都對Java的函數參數傳遞產生過疑問。那麼它究竟是怎麼傳遞的參數呢?爲什麼有時候是值傳遞,有時候就成了引用傳遞呢?

許許多多人說,Java語言簡單的主要因素就是去掉了CPP中的指針,但是這句話一點都不正確,Java中不是沒有指針,而是Java故意隱藏了指針,讓你看不到指針,也就意識不到你是在操作指針,因此,不少人在這裏栽過跟頭。

Java的指針究竟在哪裏呢?

其實,我們所認知的Java程序他的基礎就是指針,所有程序中的類實例都是以指針的形式存在的。如何理解這句話呢?

在解釋真正的運行原理之前,我們必須記住這樣一句話:“數據類型是數據存儲空間與操作方法組成的集合。”,有了以上前提,我們就可以如此形象的理解Java程序的運行過程:

Java程序運行過程中,在計算機中的存儲空間是動態管理的,我們在語言中操作的變量其實只是一個名字,這個名字並不存儲任何東西。在程序運行過程中,Java的變量名字會被映射到系統給他開闢的存儲空間之中,我們對這個變量所做的所有操作,最後都會指向名字映射的存儲空間,進而對值進行操作。Java語言中所有的簡單類型都是如此操作的。系統在操作變量的過程中,直接將操作指向Java的存儲空間中的數據。但是Java中不僅僅有簡單數據類型,關鍵是他有第三方數據類型,自定義的類,這種類型是無限多的。因此他在簡單類型的基礎上由包裝了一層,在Java程序中,類變量的名字直接指向的空間實際上並不是真實的類的數據,而是類的數據的指針。也就是說是類的指針。這樣一來,Java的所有行爲就能夠輕鬆解釋了。

Java在運行過程中調用函數,進行參數傳遞,只是簡單的遵守着值傳遞的過程,簡單類型,他就講變量內的內容傳遞過去了,而自定義的類呢?它其實是將類的指針傳遞過去了。在被調用的函數中規定的類型名字實際上是向子程序指明瞭傳入數據的操作方式,簡單類型讓子程序明白了只需要一次映射就可以修改值了,而複雜的類類型則讓子程序明白了,傳進來的數據只是一個指針,需要二次映射才能夠訪問數據。而這一切都是藏在幕後,不會讓你發現的。

現在你應該不會在對Java程序的參數傳遞過程中出現的函數作用域問題再感到困惑了吧。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章