不申请第三个变量交换两个int long char型值
2014-04-01 17:27
148 查看
看到有一些笔试题是问如何不申请第三个变量交换两个变量的值,例如 int a = 1; int b=2; 用三行代码实现两个数值的交换。我研究了加减法和异或的方法,认为两种方法在思路上是等价的,也调研过一些网友写的文章,还是申请tmp变量的方法应用性强,这种题目不过是考考智商。本文主要讨论异或的方法。
异或的方法可以用于int型和long型的变量,加减法的话也是相同的,一搜一大堆,就不赘述了,值得一提的是,我思考是不是char型或者String型变量也可以用异或的方法交换,经调研发现,只有按位计算的情况下才可以,于是想到ascII码,认为char型变量也是可以通过异或三行代码进行交换。
以下是java代码:
运行结果:
异或的方法可以用于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); } }
运行结果:
相关文章推荐
- 交换两个变量,而不引用第三个变量
- 温故知新系列(二)交换两个变量的值不用第三个变量
- 面试题:交换两个变量的值,不使用第三个变量
- 交换两个变量的值,不使用第三个变量
- 不借助第三个变量,交换两个变量值的3种方式
- 交换两个变量的值(不借助于第三个变量)
- 不用第三个变量,交换两个int数
- 不借助第三个变量实现两个变量交换的思考
- 不声明第三个变量交换两个同类型数的值
- 交换两个变量的值,不使用第三个变量
- 不用第三个变量,直接交换两个变量的值
- 不借助第三个变量交换两个变量的值
- 交换两个变量的值,不使用第三个变量的四种方法
- JavaScript不借助第三个变量交换a,b两个变量值
- 不用第三个变量交换两个参数值
- 不使用第三个变量交换两个int类型变量的值
- 不借助第三个变量交换两个整数
- 不使用第三个变量交换两个变量的值之"异或"的实际应用
- 交换两个变量的值,不使用第三个变量的四种方法
- 不用第三个变量就能交换两个变量值的五个方法