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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 吴建昆 于 2013-4-29 02:04 编辑

通常情况下,交换int型变量的值时,都会定义一个中间变量,来回的倒腾,最终实现两个变量值的交换。
那么,还有没有其它方法可以实现交换功能呢?

6 个回复

倒序浏览
a = a + b;
b = a - b;     //a+b-b 就是 a  赋给 b
a = a - b;     // a+b - b(上一步的b也就是原来的a)  就等于原来的 b   赋给 a  
回复 使用道具 举报
贾文泽 发表于 2013-4-29 01:48
a = a + b;
b = a - b;     //a+b-b 就是 a  赋给 b
a = a - b;     // a+b - b(上一步的b也就是原来的a) ...

谢谢 简单明了,懂了 呵呵
回复 使用道具 举报
通过位移运算来进行交换:
大致过程如下
int x = 10;
int y = 20;
x = x ^ y;
y = x ^ y;
x = x ^ y;
回复 使用道具 举报
这个问题之前就有同学问过了,一般的有俩种方法,
一种是通过和:x=x+y;
y=x-y
x=x-y
还有一种就是异或运算
x = x ^ y;
y = x ^ y;
x = x ^ y;
回复 使用道具 举报
  1. class SwapVar
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 //第一种方法,当x和y较大时,可能会出现int范围溢出问题
  6.                 int x=3;
  7.                 int y=4;
  8.                 x=x+y;
  9.                 y=x-y;
  10.                 x=x-y;
  11.                 out.println("x="+x+";y="+y);
  12.                
  13.                 //第二种方法
  14.                 int a=3;
  15.                 int b=4;
  16.                 a=a^b;
  17.                 b=a^b;
  18.                 a=a^b;
  19.                 out.println("a="+a+";b="+b);
  20.         }
  21. }
复制代码
不过在进行变量交换时,还是建议使用第三方变量。
回复 使用道具 举报
   楼上正解   具体讲解 毕老师 基础教学 第二天   15个视频有详细讲解  正好复习到这里 嘻嘻
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马