你的位置:首页 > Java教程

[Java教程]Java 两个变量交换值


  上课时候正好讲到交换变量,学生说我借助第三方变量来交换好low,哈哈。好吧...

  我来总结下我知道的,java的一些交换变量的方式。来人啊,代码伺候:

package test;public class Test {  public static void main(String[] args) {    int a, b;    a = 10;    b = 12;    System.out.println(a + " " + b);    /*     * 借助第三方变量 这种算法易于理解,特别适合帮助初学者了解计算机程序的特点,是赋值语句的经典应用。     * 在实际软件开发当中,此算法简单明了,不会产生歧义,便于程序员之间的交流。 一般情况下碰到交换变量值的问题,都应采用此算法(标准算法)。     */    int temp = a;    a = b;    b = temp;    System.out.println(a + " " + b);    /*     * 算术算法 它的原理是:把a、b看做数轴上的点,围绕两点间的距离来进行计算。 具体过程:     * 第一句“a=b-a”求出ab两点的距离,并且将其保存在a中;     * 第二句“b=b-a”求出a到原点的距离(b到原点的距离与ab两点距离之差),并且将其保存在b中;     * 第三句“a=b+a”求出b到原点的距离(a到原点距离与ab两点距离之和),并且将其保存在a中。完成交换。     * 此算法与标准算法相比,多了三个计算的过程,但是没有借助临时变量。(算术算法)     */    a = b - a;    b = b - a;    a = b + a;    System.out.println(a + " " + b);    /*     * 异或 相同为1 不同为0 此算法能够实现是由异或运算的特点决定的,通过异或运算能够使数据中的某些位翻转,其他位不变。     * 这就意味着任意一个数与任意一个给定的值连续异或两次,值不变。     * 即:a^b^b=a。将a=a^b代入b=a^b则得b=a^b^b=a;同理可以得到a=b^a^a=b;轻松完成交换。     */    a = a ^ b;// 1010 ^ 1100 1001    b = a ^ b;// 1001 ^ 1100 1010    a = a ^ b;// 1001 ^ 1010 1100    System.out.println(a + " " + b);  }}

个人觉得异或好玩点。