引用傳遞進階分析

引用傳遞是java的整體核心
如果不懂引用傳遞。基本上所有的代碼都無法進行正常的分析。下面使用3個簡單程序來對引用傳遞做一個完整的分析。


范例 1:第一道引用傳遞 (對象的引用)

class Message{
    private int num;
    public void setNum(int num){
        this.num = num;
    }
    public int getNum(){
        return this.num;
    }
}
public class Test{
    public static void main(String[] args){
        Message msg = new Message();
        msg.setNum(100);
        fun(msg);
        System.out.println(msg.getNum());
    }
    public static void fun(Message temp){ //引用傳遞
        temp.setNum(30);
    }
}

結果: 30

下面通過內存關系圖來進行分析:


09.png

范例 2:第二道引用傳遞 (字符串的引用)

public class Test{
    public static void main(String[] args){
        String str = "hello";
        fun(str);
        System.out.println(str);
    }
    public static void fun(String temp){ //引用傳遞
        temp = "word";
    }
}

結果:hello

本題目分析的關鍵在于:字符串常量一旦聲明則不可改變,字符串對象的內容的改變依靠的是地址的引用關系變更。

下面通過內存關系圖來進行分析:


10.png

范例 3:第三道引用傳遞 (對象and字符串的引用)

class Message{
    private String note;
    public void setNote(String note){
        this.note = note;
    }
    public String getNote(){
        return this.note;
    }
}
public class Test{
    public static void main(String[] args){
        Message msg = new Message();
        msg.setNote("Hello");
        fun(msg);
        System.out.println(msg.getNote());
    }
    public static void fun(Message temp){ //引用傳遞
        temp.setNote("world");
    }
}

結果:world

如果要想對以上的方法進行分析,一定要有一個前提:把String類的使用當作一個基本數據類型那樣來操作。

下面通過內存關系圖來進行分析:(按照基本數據類型分析)


11.png

String是引用類型,不應該按照基本數據類型那樣來進行分析,應該按照引用類型來進行分析。

下面通過內存關系圖來進行分析:(按照引用數據類型分析)


12.png

總結:

對于字符串最簡單的做法是按照基本數據類型那樣來進行分析。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 引用傳遞是Java的整體核心,如果你不懂引用傳遞,基本上所有的代碼都無法進行正常的分析。 一.通過題目來進行分析 ...
    河神_6961閱讀 182評論 0 0
  • 大概是昨天穿少了,我覺得自己有點發燒,腦子暈乎乎的,發燒的時候很多事情就瞞不住了。我很想他。可是不能說話,不能犯J...
    六娃77閱讀 349評論 0 0
  • 天堂的生活很美妙,我深有感受。 但是在某些地方,仍然讓我感到很不愉快。 最顯而易見的,當然...
    巡靈初鏡閱讀 301評論 0 1
  • 文章點評 文章通過續寫青蛙王子的故事,告訴自己的女兒在長大以后要小心男人的甜言蜜語。文章的文字流暢,情節設置的...
    上善若水在路上閱讀 214評論 0 0
  • 看了第十五章一點點,隔了一個月沒看,前面幾乎都忘光了。但是還是決定繼續之前的進度看。還是被作者豐富的知識所打動呀,...
    冰洛洛閱讀 178評論 0 0