您的位置:首页 > 其它

不申请第三个变量交换两个int long char型值

2014-04-01 17:27 148 查看
看到有一些笔试题是问如何不申请第三个变量交换两个变量的值,例如 int a = 1; int b=2; 用三行代码实现两个数值的交换。我研究了加减法和异或的方法,认为两种方法在思路上是等价的,也调研过一些网友写的文章,还是申请tmp变量的方法应用性强,这种题目不过是考考智商。本文主要讨论异或的方法。

异或的方法可以用于int型和long型的变量,加减法的话也是相同的,一搜一大堆,就不赘述了,值得一提的是,我思考是不是char型或者String型变量也可以用异或的方法交换,经调研发现,只有按位计算的情况下才可以,于是想到ascII码,认为char型变量也是可以通过异或三行代码进行交换。

以下是java代码:

import java.lang.System;

public class exchange
{
public static void main(String[] args)
{
char a = 'a';
char b = 'b';
a = (char)(((int)a)^((int)b));
b = (char)(((int)a)^((int)b));
a = (char)(((int)a)^((int)b));
System.out.println("a= " +a +" b= "+b);
}
}


运行结果:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: