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

    个人觉得异或好玩点。

  • 相关阅读:
    需求获取过程中的逆向沟通
    程序员==生 涯 篇
    算法设计
    灯的启示:微软对唐骏的面试题
    使用Gzip压缩提升WEB服务器性能
    简历误区
    招聘编辑的七道面试题
    web2.0及其相关技术
    经典面试题助你成功就业
    逗号网站推广营销策略
  • 原文地址:https://www.cnblogs.com/SeanAstin/p/5711228.html
Copyright © 2011-2022 走看看