久久r热视频,国产午夜精品一区二区三区视频,亚洲精品自拍偷拍,欧美日韩精品二区

您的位置:首頁技術文章
文章詳情頁

java - 求助:詳細分析以下這段代碼,搞糊涂了

瀏覽:102日期:2023-12-15 15:27:48

問題描述

public class T1 {

public static void rename(String aa){aa='AA'; }public static void main(String args[ ]){String aa='BB';rename(aa); System.out.println(aa);}

}我的理解:rename方法中的aa是在棧內存中,main方法中的aa是在堆內存中的,執行rename方法是不會修改main方法中的aa的值,是這樣嗎?

問題解答

回答1:

按值傳遞(call by value)是最常用的求值策略:函數的形參是被調用時所傳實參的副本。修改形參的值并不會影響實參。

按引用傳遞(call by reference)時,函數的形參接收實參的隱式引用,而不再是副本。這意味著函數形參的值如果被修改,實參也會被修改。同時兩者指向相同的值。

Java核心技術(I)提到,Java都是按值傳遞,首先對于基本類型,函數并不能修改它的值,對于引用類型,函數也不能修改使得其指向另一個對象。所以都是按值傳遞。

回答2:

不是吧,函數里頭的aa指向了新的地址,外部的aa還是指向'BB'的地址,所以結果是BB

回答3:

函數傳值,并沒有把MAIN函數中的AA傳進去,而是對AA的值做了一份拷貝,然后傳遞進去

標簽: java
主站蜘蛛池模板: 普洱| 娄烦县| 合水县| 横山县| 九台市| 惠东县| 乃东县| 关岭| 浑源县| 南溪县| 新乡县| 巴彦淖尔市| 华安县| 于田县| 榕江县| 都昌县| 大余县| 久治县| 峨眉山市| 连平县| 时尚| 仙桃市| 临泽县| 彭泽县| 庆安县| 诏安县| 鄂托克前旗| 宝丰县| 胶州市| 天津市| 尼勒克县| 榆中县| 牟定县| 南投县| 尉氏县| 山阳县| 高邮市| 西林县| 巧家县| 星座| 德清县|