歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Java中的參數傳遞與引用

有些Java書籍在介紹Java中的傳參時都說,不論是基本類型還是對象類型,都是傳值。這種說法不能算錯,但往往讓很多初學Java的人感到很困惑。因為這裡所說的傳值與c++中簡單變量的傳值已經不是同一個概念。

對於Java傳參,我覺得更准確一點的描述是,不論參數是什麼類型,傳遞的都是參數的副本。

  • 對於基本類型的變量,傳遞值的副本。
  • 對於引用類型的變量(包括對象與數組),傳遞引用的副本。由於引用的副本與引用指向的都是同一個對象,因此對引用副本的操作仍然會改變對象的值。

值得注意的是,如果一個類是final類型,那麼這個類的實例(即對象)是不可變的。當嘗試通過該對象的引用對對象重新賦值時,Java會生成一個新的對象並將該引用指向新的對象。因此之前的對象並沒有發生任何改變。

因此當參數是引用類型時,如果該類型是final的,此時的傳參看起來會和基本類型的傳值差不多(不會改變原有對象的值)。但是實質上傳遞的還是引用的副本。

final類型的類包括:

  • String類
  • 基本類型的包裝類,包括Integer、Boolean等
Copyright © Linux教程網 All Rights Reserved