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

标签 java swap

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

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

System.out.println(b = a);

给出 20 作为结果?

最佳答案

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

这是一种无需支持变量即可交换数字类型的方法。

他们通常在面试时问你这个问题。

它特别难以阅读,因为它是一行写的,但请逐步考虑这一点:

int a = 5;
int b = 2;

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

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

<小时/>

System.out.println(b = a);

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

使用b = a,您可以将a的值赋给b,然后打印其结果。

关于java - 这里到底发生了什么?这是交换两个变量的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48967355/

相关文章:

应用内容安全策略后 Azure 交换不起作用

Java HashMap : Swap two values?

c - C中可以同时执行两条语句吗?

java - 如何将 File.separator 用于 jar 文件资源?

java - Apache Storm - 从 Config 读取 YAML 列表

java - 使用配置文件运行 spring boot jar 文件 - 错误找不到属性文件

python - 交换数组中的元素

c - 在c中交换任何类型的两个变量

java - 野蝇: is possible to define websocket endpoint inside an EJB module of an EAR?

java - 强制代码片段始终出现在一组 Java 类中