黑马程序员技术交流社区

标题: 关于参数传递问题 [打印本页]

作者: 卢乾荣    时间: 2015-3-19 22:46
标题: 关于参数传递问题
基本类型中形式参数的改变为什么不会影响到实际参数?我举例一下:
1.我写了一个在主函数中写一个for循环,并在方法体内定义了一个局部变量,也就是累加器:
public static void main(String args[])
{
       int sum=0
       for(int i=0;i<10;i++)
       {   
            sum+=i;
        }
     System.out.println(sum);
}
sum相当于做了累加器,sum会有一个值。
第一代码不是我的问题,看第二段代码。
public static void main(String[] args)
                {
                        int a = 10;
                        int b = 20;
                        System.out.println("a:"+a+",b:"+b);//a=10,b=20.这里我没有疑问
                        change(a,b);//a=20,b=40.没有疑问
                        System.out.println("a:"+a+",b:"+b);//这里a=10,b=20.问题来了
              }

              public static void change(int a,int b)
                {
                        System.out.println("a:"+a+",b:"+b);
                        a = b;
                        b = a + b;
                        System.out.println("a:"+a+",b:"+b);
                }
我加粗的地方,就是疑问,第一段代码中sum和第二段代码中的a和b,都作为局部变量,为什么sum能累加一个值,而a和b却变成了初始值了?



作者: rhui    时间: 2015-3-19 23:03
第二段代码  change函数运算完了  没有返回到调用的地方,所有结果没变
作者: 卢乾荣    时间: 2015-3-19 23:06
兄弟,你是说change()函数中运行,运行完后在占内存中消失了,int a和int b还是变成了它原来的初始值是这意思不




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2