黑马程序员技术交流社区

标题: 新手问题:置换位置 [打印本页]

作者: 王亚男    时间: 2012-3-2 12:09
标题: 新手问题:置换位置
今儿个在回顾老视频的时候,遇到一个小问题,突然晕了……
请前辈们解释下,勿笑……
  1. class  Swap
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 int x=8;
  6.                 int y=9;
  7.                         System.out.println("x="+x+",y="+y);
  8.         Swap_3(x,y); //这里使用了置换方法,为什么打印出来还是没有置换……如果不用方法,直接写在主方法里或者把输出语句放在Swap_3(int a,int b)里是可以的..请前辈解释下..
  9.                         System.out.println("x="+x+",y="+y);
  10.         }
  11.                 public static void Swap_3(int a,int b)
  12.         {
  13.                 a = a ^ b;
  14.                 b = a ^ b;
  15.                 a = a ^ b;

  16.         }

  17. }
复制代码

作者: 房宝彬    时间: 2012-3-2 12:14
Swap_3 这个方法里,你得加上Syso..

定义一个方法 ,然后传进去参数,就完事了.也没有返回.
作者: 唐林渊    时间: 2012-3-2 12:17
本帖最后由 唐林渊 于 2012-3-2 12:41 编辑

void没有返回
第一种方法
public static void main(String[] args) {
   int x=2,y=6;
     x=x^y;
     y=x^y;
    x=x^y;
     System.out.println("x="+x+" "+"y="+y);

}
这个事最简单的
x=y+(y=x)-x

作者: 王亚男    时间: 2012-3-2 12:19
房宝彬 发表于 2012-3-2 12:14
Swap_3 这个方法里,你得加上Syso..

定义一个方法 ,然后传进去参数,就完事了.也没有返回. ...

还得让高级黑马解答这样的问题~老脸一红~不胜感激。。

不过数组这种引用型变量好像就可以……
作者: 姚鑫    时间: 2012-3-2 12:19
Swap_3(int a,int b)函数是值传递的,只是把x,y的值赋给a,b。并没有把x,y的内存地址传进去。函数操作的只是该方法的两个局部变量,x,y的值没有变化。可以将程序中的int全该为Interger,就可以了,这是引用传递,传递的是地址。
作者: 王亚男    时间: 2012-3-2 12:24
姚鑫 发表于 2012-3-2 12:19
Swap_3(int a,int b)函数是值传递的,只是把x,y的值赋给a,b。并没有把x,y的内存地址传进去。函数操作的只是 ...

太详细了!谢谢前辈!
作者: 王亚男    时间: 2012-3-2 12:25
唐林渊 发表于 2012-3-2 12:17
第一种方法
public static void main(String[] args) {
   int x=2,y=6;

又学一招!!谢谢前辈!
作者: 房宝彬    时间: 2012-3-2 12:47
qwert 发表于 2012-3-2 12:19
还得让高级黑马解答这样的问题~老脸一红~不胜感激。。

不过数组这种引用型变量好像就可以…… ...

:victory:加油.




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