我正在學習Java,並且不禁想知道Java如何傳遞函數參數和返回值。我做了一些搜索,發現Java只按值傳遞對象。但是,有些人對此提出質疑。他們聲稱在處理複雜數據類型(不是原始的,如int
)時它只傳遞一個指針。Java函數傳遞和返回複雜數據類型
這是否意味着對本地對象所做的任何更改都會影響原始對象?有沒有什麼辦法可以通過值來傳遞「PURELY」(即製作一個Object的硬拷貝)?
此外,返回值是什麼?例如,我們使用訪問器(或getter函數 - 我不完全確定它們是如何被調用的)來保護ADT的私有屬性不被更改爲「非法」值。如果Java傳遞指針,那麼無論我對Accessor函數的返回對象所做的更改是否也會影響實際屬性,如果它不是原始數據類型,不是嗎?
有誰能幫我澄清這些概念嗎? 先謝謝您! :D
請參閱http://stackoverflow.com/questions/40480/is-java-pass-by-reference?rq=1 - 基本上返回值是相同的。返回值是原始值或引用。從不是物體。 –