zoukankan      html  css  js  c++  java
  • 三种方法交换变量值

    有两个整形变量

    int a=2;
    int b=5;

    现要交换a和b的值。
    常用的方法:定义一个中间变量,由这个变量暂时保存交换的值。

    int temp=a;
    a=b;
    b=temp;
    System.out.println("a="+a);
    System.out.println("b="+b);

    但这种方法引入的第三变量,增大了内存开销,所以还有另外两种不需要中间变量的交换方法。

    加减法(算数运算法):

    a=a+b;
    b=a-b;//b=a-b=(a+b)-b=a
    a=a-b;//a=a-b=(a+b)-b=(a+b)-a=b
    System.out.println("a="+a);
    System.out.println("b="+b);

    通过简单的加减运算便交换了两个变量的值。

    异或法:

            a=a^b;
            b=a^b;
            a=a^b;
            /**
             *      a=a^b       0010^0101=0111
             *      b=a^b       0111^0101=0010
             *      a=a^b       0111^0010=0101
             */
            System.out.println("a="+a);
            System.out.println("b="+b);

    通过三次连续的异或便实现了交换

    完整代码:

    public static void main(String[] args) {
            int a=2;
            int b=5;
            //常用方法:引入中间变量
            int temp=a;
            a=b;
            b=temp;
            System.out.println("a="+a);
            System.out.println("b="+b);
            System.out.println("-------------");
            //加减法
            a=a+b;
            b=a-b;//b=a-b=(a+b)-b=a
            a=a-b;//a=a-b=(a+b)-b=(a+b)-a=b
            System.out.println("a="+a);
            System.out.println("b="+b);
            System.out.println("-------------");
            //异或的方法
            a=a^b;
            b=a^b;
            a=a^b;
            /**
             *      a=a^b       0010^0101=0111
             *      b=a^b       0111^0101=0010
             *      a=a^b       0111^0010=0101
             */
            System.out.println("a="+a);
            System.out.println("b="+b);
        }
    

    运行输出:
    这里写图片描述

  • 相关阅读:
    都不敢上CSDN了
    什么是函数(function)?
    今天3/8妇女节
    一件有意思的事情:关于std::string和std::auto_ptr
    转两篇Link相关的文章
    DevIL Downloads
    状态模式(State Pattern)
    访问者模式(Visitor Pattern)
    羊皮卷的故事第二章
    备忘录模式(Memento Pattern)
  • 原文地址:https://www.cnblogs.com/cnsec/p/13286834.html
Copyright © 2011-2022 走看看