A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 卢乾荣 中级黑马   /  2015-3-19 22:46  /  1372 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

基本类型中形式参数的改变为什么不会影响到实际参数?我举例一下:
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却变成了初始值了?


2 个回复

倒序浏览
第二段代码  change函数运算完了  没有返回到调用的地方,所有结果没变
回复 使用道具 举报
兄弟,你是说change()函数中运行,运行完后在占内存中消失了,int a和int b还是变成了它原来的初始值是这意思不
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马