1. 程式人生 > >方法的值傳遞機制練習

方法的值傳遞機制練習

理解方法的值的傳遞的流程:

package com;

class value {
    int i = 15;
}

public class pass {
    public static void main(String[] args) {
        pass p=new pass();
        p.first();
    }

    public void first() {
        int i = 5;
        value v1 = new value();
        v1.i = 25;
        second(v1, i);
        System.out.println(v1.i);
    }

    
public void second(value v2, int i) { i = 0; v2.i = 20; value val = new value(); v2 = val; System.out.println(v2.i + " " + i); } }

這裡,當first方法呼叫second方法時,將v1的value方法的地址傳遞給了v2,而v2改變了v1所在的那個value方法的值,變成了20
當val重新呼叫的value的地址,value裡面的數值還原,即int=15,然後將val呼叫的value的新的地址賦給了v2,所以值也就是15,(v2當改變完了v1所在的value堆空間的數值之後,就改變了指向的地址,變成了val的地址)
而這裡面的int是存在於棧空間的,不是在value方法的堆空間裡,所以呼叫了value對於i沒有宣告影響。
輸出之後,釋放了second所存的數值,但是v1所在的value方法的數值沒有釋放,所以輸出的v1是v2所改變後的數值,即為20