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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王亚男 黑马帝   /  2012-3-2 12:09  /  2123 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

今儿个在回顾老视频的时候,遇到一个小问题,突然晕了……
请前辈们解释下,勿笑……
  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. }
复制代码

7 个回复

正序浏览
qwert 发表于 2012-3-2 12:19
还得让高级黑马解答这样的问题~老脸一红~不胜感激。。

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

:victory:加油.
回复 使用道具 举报
唐林渊 发表于 2012-3-2 12:17
第一种方法
public static void main(String[] args) {
   int x=2,y=6;

又学一招!!谢谢前辈!
回复 使用道具 举报
姚鑫 发表于 2012-3-2 12:19
Swap_3(int a,int b)函数是值传递的,只是把x,y的值赋给a,b。并没有把x,y的内存地址传进去。函数操作的只是 ...

太详细了!谢谢前辈!
回复 使用道具 举报
Swap_3(int a,int b)函数是值传递的,只是把x,y的值赋给a,b。并没有把x,y的内存地址传进去。函数操作的只是该方法的两个局部变量,x,y的值没有变化。可以将程序中的int全该为Interger,就可以了,这是引用传递,传递的是地址。
回复 使用道具 举报
房宝彬 发表于 2012-3-2 12:14
Swap_3 这个方法里,你得加上Syso..

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

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

不过数组这种引用型变量好像就可以……
回复 使用道具 举报
本帖最后由 唐林渊 于 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
回复 使用道具 举报
Swap_3 这个方法里,你得加上Syso..

定义一个方法 ,然后传进去参数,就完事了.也没有返回.
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马