这里到底发生了什么?这是用于交换两个变量的代码

时间:2018-02-24 20:37:06

标签: java swap

a = b-(a-(b = a));  //swapping a and b

另外,如果a=20,b=10为什么

System.out.println(b = a);

结果是20?

1 个答案:

答案 0 :(得分:1)

a = b-(a-(b = a));  //swapping a and b

这是一种在不需要支持变量的情况下交换numeric类型的方法。

他们通常在采访中问你这个问题。

由于它是用一行写的,所以特别难以理解,但请逐步考虑:

int a = 5;
int b = 2;

a = b - a; // <- -3
b = b - a; // <- 2 - ( - 3) <- 5
a = a + b; // <- (- 3) + 5 = 2

如果没有临时变量,您仍然无法交换非numeric类型。

使用

System.out.println(b = a);

我想您想检查b是否等于a,在这种情况下,您应该编写System.out.println(b == a),其结果为布尔结果。

使用b = a,您将a的值分配给b,然后打印其结果。