本帖最后由 杨永峰 于 2012-5-25 22:54 编辑
方法调用时参数传递问题,不同的对象作为参数传递,情况有所不同,上述情况分析:- public class Test{
- //add();中接受的参数变量j与所定义的符号无关,可以和发送的参数名相同。类型必须一致。
- public static void add(Integer j){ //add3(i);执行时,在该方法内存中新建j变量,指向 main()函数中创建的Integer对象(堆),也就是将i的值复制给j;
- int var = j.intValue(); // var 变量和被赋予的值都在add()方法的内存中。
- var= var + 2;
- j =new Integer(var); // add()所属内存中完成新建对象和赋值,与main()中的i无半毛关系。
- }
- public static void main(String args[]){
- Integer i=new Integer(5); // 这种定义方式会在堆内存中创建一个 Integer 对象,i在main()方法栈内存,存放指向 Integer对象(堆)的地址
- add(i); // add();方法入栈,开始执行。
- System.out.println(i.intValue());
- }
- }
复制代码 |