java方法的值传递小案例

package colletion;

/**
【java方法的值传递小案例】* 注意点:
* 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);
}
}

    推荐阅读