zoukankan      html  css  js  c++  java
  • 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);
        }
    }

  • 相关阅读:
    《卓有成效的管理者》读后感
    小课堂week13 Clean Code Part2
    小课堂Week12 Clean Code Part1
    小课堂Week11 会说话的代码
    小课堂Week10 例外处理设计的逆袭Part3
    Spark菜鸟学习营Day6 分布式代码运行调试
    UML(一) 类图及类间关系
    分布式事务(一)两阶段提交及JTA
    Java线程间通信方式剖析——Java进阶(四)
    Java进阶(三)多线程开发关键技术
  • 原文地址:https://www.cnblogs.com/jianwei-dai/p/5726275.html
Copyright © 2011-2022 走看看