天天看點

Java方法中參數的傳遞問題總結

Java方法中參數傳遞方式有兩種:傳值(value)和傳引用(reference)。

1、基本資料類型是按傳值的方式進行傳遞。當按值傳遞時,實參會複制多一份,因而在方法内修改參數的值,并不影響原實參。基本資料類型有:byte、short、int、long、float、double、char、boolean。

2、複雜資料類型按引用傳遞,如String、Array、自定義類等。引用存放的是對象的位址,并不是對象。當引用作為實參傳遞到函數時,引用也會複制多一份,與原來的引用并不同,隻是它們都是指向同一對象。是以,這時在方法内直接對複制的引用指派,不會影響原對象,這個操作隻是将複制得到的引用指向新的對象。如果對複制得到的引用進行操作(執行某個方法),實質是按照引用指向的位址,找到原對象後進行操作,故這時候會改變原對象。

3、無論是按值傳遞還是按引用傳遞,實參到了方法内都會複制一份,原因是每個函數是一個棧結構,棧空間管理變量資源,是以就有複制一說。鑒于複制的原因,是以,傳參數的時候,還是傳引用比較好,大的對象會非常消耗棧空間的。