Java中交换两个整数类型的变量

图中画圈内容是什么,新手看不懂,希望各位大佬赐教... 图中画圈内容是什么,新手看不懂,希望各位大佬赐教 展开
 我来答
貌似風輕
2018-02-20 · TA获得超过7280个赞
知道大有可为答主
回答量:1672
采纳率:94%
帮助的人:702万
展开全部

^ 在java中是位运算符,异或运算。你圈的那三行核心代码就是通过异或运算来交换变量A、B的值。

关于异或运算:异或运算

public class Test {
    public static void main(String[] args) {
        int A = 14;
        int B = 5;

        A = A ^ B;
        B = B ^ A;
        A = A ^ B;

        System.out.println("A = " + A);  // A = 5
        System.out.println("B = " + B);  // B = 14
    }
}

执行结果

就现在的实际开发来说这种写法适合装逼。

在现在的实际开发中通常是下面这样写的,简单易懂

int temp = A;  // 引入一个中间变量
A = B;
B = temp;
百度网友80030062
2018-02-20
知道答主
回答量:8
采纳率:0%
帮助的人:6813
展开全部
因为异或是位运算,利用异或方式交换变量其实就是交换两个变量对应的位。所以只要研究会1bit大小的变量交换的原理就好了。而研究1bit大小变量交换原理的方法就是穷举了。
+------+--+--+--+--+
|ab的值|00|01|10|11|
+------+--+--+--+--+
|a=a^b |00|11|10|01|
+------+--+--+--+--+
|b=a^b |00|10|11|01|
+------+--+--+--+--+
|a=a^b |00|10|01|11|
+------+--+--+--+--+

+--+--+--+--+
从 |00|01|10|11|
+--+--+--+--+
到 |00|10|01|11|
+--+--+--+--+

实现了位的交换 。
两个变量对应的位交换了,两个变量也就交换了。
至于两个变量为同一引用时会出现什么结果,照着上面的方法自己试一试就知道了。

作者:mewiteor
链接:https://www.zhihu.com/question/62003033/answer/193562832
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式