java方法的值传递小案例

package colletion;

/**

* 注意点:

* 1.每一个方法都有自己的栈内存,但是共用堆内存

* 2.方法运行结束后,对应的栈内存即销毁

*/

import java.util.ArrayList;

import java.util.Collection;

public class TestDemo {

    public static void main(String[] args) {

//main方法的栈内存存放a,s,p,c变量,同时存放a的值。而另外三个变量的值存放在堆内存中。

        int a =1;

        String s = "hello";

        Point p = new Point(1,2);

        Collection c = new ArrayList();

        c.add(p);

        test(a,s,c,p);

        System.out.println("a:"+a);

        System.out.println("s:"+s);

        System.out.println("p:"+p);

        System.out.println("c:"+c);

    }

//在test()方法的堆内存中存放变量a,s,p,c,p2。

    public static void test(int a,String s,Collection c,Point p) {

//test()栈中a的值为2。

        a = a+1;

//test()栈中s指向堆中world。

        s = "world";

//test()中p2指向堆中new Point(1,2)。

        Point p2 =p;

//堆中new Point(1,2)变为new Point(1,8)。

        p.setY(8);

//test()栈中p指向堆中new Point(3,4)。

        p = new Point(3,4);

//堆中c集合增加元素new Point(3,4)。

        c.add(p);

//test()中c集合指向空集合new ArrayList()

        c = new ArrayList();

//堆中新集合增加元素new Point(3,4)。

        c.add(p);

//堆中new Point(3,4)的值变为new Point(8,4)。

        p.setX(8);

//test()栈中p2对应的值为new Point(1,8),修改为new Point(9,8)。

        p2.setX(9);

    }

}

你可能感兴趣的:(java方法的值传递小案例)