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

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

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

瀏覽:111日期: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是在棧內(nèi)存中,main方法中的aa是在堆內(nèi)存中的,執(zhí)行rename方法是不會修改main方法中的aa的值,是這樣嗎?

問題解答

回答1:

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

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

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

回答2:

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

回答3:

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

標簽: java
主站蜘蛛池模板: 海原县| 怀远县| 鹿泉市| 石台县| 迭部县| 页游| 井冈山市| 通城县| 石屏县| 梧州市| 新密市| 秦皇岛市| 富锦市| 绥德县| 阳江市| 铁岭县| 时尚| 巴中市| 项城市| 丰原市| 禹州市| 荃湾区| 平和县| 千阳县| 康平县| 霍邱县| 大足县| 岗巴县| 鄂托克前旗| 诸暨市| 措勤县| 南充市| 新源县| 融水| 尚志市| 保德县| 奇台县| 红原县| 武宁县| 酉阳| 安乡县|