黑马程序员技术交流社区

标题: 交换两个数 [打印本页]

作者: ifuzhen    时间: 2014-5-14 18:52
标题: 交换两个数
本帖最后由 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 怎么没有交换啊?

作者: ۩大世界小人物    时间: 2014-5-14 19:17
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()函数中的两个局部变量产生任何影响。。




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

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

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

QQ图片20140514192758.jpg

作者: 彭旭文    时间: 2014-5-14 21:01
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值调换。




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