1. 程式人生 > >Java基礎_0310:引用傳遞

Java基礎_0310:引用傳遞

[] 利用 clas -m temp oid param 核心 test

引用傳遞

引用傳遞是Java之中最讓初學者費解的概念,而在實際的開發之中,引用傳遞又有著非常重要的作用;
引用傳遞的核心在於同一塊堆內存空間被不同的棧內存所指向;

範例:第一道引用傳遞範例

class Message {
    private int num = 10;       // 定義int基本類型的屬性
    /**
     * 本類沒有提供無參構造方法,而是提供有參構造,可以接收num屬性的內容
     * @param num 接收num屬性的內容
     */
    public Message(int num) {
        this.num = num; // 為num屬性賦值
    }
    public void setNum(int num) {
        this.num = num;
    }
    public int getNum() {
        return this.num;
    }
}
public class TestDemo {
    public static void main(String args[]) {
        Message msg = new Message(30);  // 實例化Message類對象同時傳遞num屬性內容
        fun(msg);       // 引用傳遞
        System.out.println(msg.getNum());   // 輸出num屬性內容
    }
    /**
     * 修改Message類中的num屬性內容
     * @param temp Message類的引用
     */
    public static void fun(Message temp) {
        temp.setNum(100);       // 修改num屬性內容
    }
}


程序執行結果: 100

技術分享圖片

範例:第二道引用範例

public class TestDemo {
    public static void main(String args[]) {
        String msg = "Hello";       // 定義String類對象
        fun(msg);           // 引用傳遞
        System.out.println(msg);    // 輸出msg對象內容
    }
    public static void fun(String temp) {   // 接收字符串引用
        temp = "World";     // 改變字符串引用
    }
}

程序執行結果:Hello

技術分享圖片

範例:第三道引用傳遞

class Message {
    private String info = "此內容無用" ;     // 定義String類型屬性     
    public Message(String info) {       // 利用構造方法設置info屬性內容
        this.info = info ;
    }
    public void setInfo(String info) {
        this.info = info ;
    }
    public String getInfo() {
        return this.info ;
    }
}
public class TestDemo {
    public static void main(String args[]) {
        Message msg = new Message("Hello") ;    // 實例化Message類對象
        fun(msg) ;                              // 引用傳遞
        System.out.println(msg.getInfo()) ; // 輸出info屬性內容
    }
    public static void fun(Message temp) {  // 接收Message類引用
        temp.setInfo("World") ;     // 修改info屬性內容
    }
}
程序執行結果:World

技術分享圖片

Java基礎_0310:引用傳遞