zoukankan      html  css  js  c++  java
  • JAVA中两个int类型的变量在不借助第三个变量的情况下完成值的互换

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

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

       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)

  • 相关阅读:
    C语言第0次作业
    c语言博客作业02循环结构
    C语言博客作业04数组
    存储过程,函数参数默认值的一些问题
    路线查询
    C# 猜数字
    使用 Ext.Net TreePanel,TabPanel控件 布局
    SQL SERVER 2005 动态行转列SQL
    CROSS APPLY 和OUTER APPLY 的区别
    处理表重复记录(查询和删除)
  • 原文地址:https://www.cnblogs.com/fuxuepan/p/14351012.html
Copyright © 2011-2022 走看看