【发布时间】:2012-07-04 16:59:03
【问题描述】:
我想使用 XOR 运算符交换 java 中两个整数变量的值。
这是我的代码:
int i = 24;
int j = 17;
i ^= j;
j ^= i;
i ^= j;
System.out.println("i : " + i + "\t j : " + j);
它可以正常工作,但以下等效代码不起作用:
int i = 24;
int j = 17;
i ^= j ^= i ^= j;
System.out.println("i : " + i + "\t j : " + j);
输出是这样的:
i : 0 j : 24
第一个变量为零! Java 出了什么问题?
【问题讨论】:
-
int k = i; i = j; j = k;有什么问题? -
Java 很好,你怎么样? :) 为什么需要使用异或?
-
@Hbcdev:我知道有一些简单的交换方法。但我的问题是两个等价的语句没有相同的行为?
-
@giorashc:我也很好;)我只是想知道这些陈述的区别。我认为它们是等效的,但结果不同