• 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);
        }
    }

  • 相关阅读:
    什么是用户画像?具体公司体现在哪?什么作用呢?
    用户画像后台表设计
    【转载】Oracle Spatial中SDO_Geometry详细说明
    【转载】ArcGIS中的WKID
    MyBatis 判断条件为等于的时候,常量需要加 .toString()
    Oracle最大进程连接数问题
    JAVA WEB基础巩固之Json、Ajax
    Eclipse常用功能
    UML类图学习
    由uploadfive看servlet
  • 原文地址:https://www.cnblogs.com/jianwei-dai/p/5726275.html
Copyright © 2020-2023  润新知