在java中什麼是參數傳遞機制?

1.java內存分爲棧內存和堆內存;基本數據類型存放在棧內存中,引用數據類型是把指向引用變量的地址存入棧內存,把引用變量的真正內容存入堆內存。

2、Java參數,不管是基本數據類型還是引用類型,傳遞的都是副本(java傳參是傳引用還是傳值,網上爭論很多)

3、如果參數類型是基本數據類型,那麼傳過來的就是這個參數的一個副本,也就是這個原始參數的值,這個跟之前所談的傳值是一樣的。如果在函數中改變了副本的值不會改變原始的值。因爲在函數中的變量是局部變量,this.類中成員變量纔是類變量。

4、如果參數類型是引用類型,那麼傳過來的就是這個引用參數的副本,這個副本存放的是參數的地址。

     如果在函數中沒有改變這個副本的地址,而是通過地址改變了地址指向的值,那麼在函數內的改變會影響到傳入的參數。

     如果在函數中改變了副本的地址,如當執行如a=其他對象,a=new等賦值操作時,實際上是將a指向新的位置,那麼函數外的原值不改變。除非用this.a=其他對象或this.a=new xxx()表示,直接對類屬性進行操作纔會改變原始值。

5、在 Java 應用程序中永遠不會傳遞對象,而只傳遞對象引用(指棧內存中對應的地址)。因此是按引用傳遞對象。Java應用程序按引用傳遞對象這一事實並不意味着 Java 應用程序按引用傳遞參數。參數可以是對象引用,而 Java 應用程序是按值傳遞對象引用的。

  1. 對象是按引用傳遞的;

  2. Java 應用程序有且僅有的一種參數傳遞機制,即按值傳遞;

  3. 按值傳遞參數意味着當將一個參數傳遞給一個函數時,函數接收的是原始值的一個副本;

  4. 按引用傳遞參數意味着當將一個參數傳遞給一個函數時,函數接收的是原始值的內存地址,而不是值的副本。



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