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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© ifuzhen 中级黑马   /  2014-5-14 18:52  /  1441 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 ifuzhen 于 2014-5-14 19:50 编辑
  1. class Test
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 int a =3;
  6.                 int b =4;
  7.                 System.out.println(a+""+b);
  8.                                 
  9.                 change(a,b);

  10.                 System.out.println(a+""+b);

  11.         }


  12.         public static void change(int a,int b)
  13.         {
  14.                 int temp =a;
  15.                 a = b;
  16.                 b =temp;
  17.         }
  18. }

复制代码


a 和 b 怎么没有交换啊?

评分

参与人数 1技术分 +1 收起 理由
天涯追梦 + 1 支持一下,加油!

查看全部评分

4 个回复

倒序浏览
class Test
{
        public static void main(String[] args)
        {
                int a =3;
                int b =4;
                System.out.println(a+""+b);
                                
                change(a,b);

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

        }


        public static void change(int a,int b)
        {
                int temp =a;
                a = b;
                b =temp;
               System.out.println(a+""+b);//新加的一个打印
        }
}


结果将是  34  43  34
解释:   当主函数中调用 change(a,b);函数时 ,  这时会给 change(3,4);的俩个形参赋值。  
然后函数内部交换两个形参的值。 change(a,b);运行 结束,出栈比释放空间,并没有对mian()函数中的两个局部变量产生任何影响。。



评分

参与人数 1技术分 +1 收起 理由
菜小徐 + 1

查看全部评分

回复 使用道具 举报 0 1
当你调用chang方法是  只相当于将原来变量的值赋给了方法的中变量的值  并没有把变量本身穿进去,所以交换的只是方法中的变量  关于这方面  你去看看 堆  栈  方法区的定义 区别 如果学过C的话 里面的地址传递和值传递就是说的这个
回复 使用道具 举报
本帖最后由 张盼 于 2014-5-14 19:29 编辑

因为change()方法没有返回值,所以要在change()方法里面输出交换后的结果

QQ图片20140514192758.jpg (56.31 KB, 下载次数: 26)

QQ图片20140514192758.jpg
回复 使用道具 举报 1 0
public static void change(int a1,int b1)
        {
                int temp =a1;
                a1 = b1;
                b1 =temp;
        }
虽然change方法把a,b的值传进了change函数里面计算,经过change函数计算后,a1和b1的值调换了,但是change函数并没有把函数里面的a1,b1值返回给main主函数里面的a,b。事实上change函数里面的a1,b1值对main主函数里面的a,b值没有影响,所以无法将主函数的a,b值调换。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马