亲宝软件园·资讯

展开

JAVA中两个int类型的变量在不借助第三个变量的情况下完成值的互换

潘复学 人气:0

  在面试中被问到这个问题,想到两种解决方式,在此分享一下。

  第一种,使用简单的数学运算达到目标(但是面试官往往会问你还有没有其他方式):

   public static void main(String[] args) {
        int a = 1;
        int b = 2;
        System.out.println("交换前:");
        System.out.println("a = " + a);
        System.out.println("b = " + b);

        a = a + b;
        b = a - b;
        a = a - b;
        System.out.println("交换后:");
        System.out.println("a = " + a);
        System.out.println("b = " + b);
    }

  第二种,使用位运算达中的异或运算达到目标(可能才是面试官真正想考察的):

    public static void main(String[] args) {
        int a = 1;
        int b = 2;
        System.out.println("交换前:");
        System.out.println("a = " + a);
        System.out.println("b = " + b);

        a = a ^ b;
        b = a ^ b;
        a = a ^ b;
        System.out.println("交换后:");
        System.out.println("a = " + a);
        System.out.println("b = " + b);
    }

异或运算原理:前后两个值的位相同为0,不相同为1,以上代码为例:1的位就是0001,2的位为0010,第一次操作之后a = 3 (0011),第二次操作之后b = 1(0001),第三次操作之后a = 2(0010)

加载全部内容

相关教程
猜你喜欢
用户评论