• 三种方法交换变量值


    有两个整形变量

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

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

  • 相关阅读:
    让层遮挡select(ie6下的问题)
    HTTP协议详解(真的很经典)
    网络编辑基础:对HTTP协议的头信息详解
    (OK) MIMP
    (OK) MIMP
    (OK) MIMP
    (OK)(OK) Android-x86-7.1.1/ kernel 4.4.62
    (OK)(OK) Android-x86-7.1.1/ kernel 4.4.62
    (OK) Android-x86-7.1.1/ kernel 4.4.62
    (OK)(OK) Android-x86-7.1.1/ kernel 4.4.62
  • 原文地址:https://www.cnblogs.com/cnsec/p/13286834.html
Copyright © 2020-2023  润新知