值交换
Java程序中方法的参数只有一种传递方式:值传递
地址传递实际上就是在传指针变量的值(所指向空间的地址)
Java中常用三种值交换方式
- 引入中间变量
public static void main(String[] args) {
int num1 = 1;
int num2 = 2;
int tmp = 0;
tmp = num1;
num1 = num2;
num2 = tmp;
}
因为赋值操作中,原数值会因被赋值而消失,所以需用中间变量保留。
2. 异或(位运算)
原理:一个数被同一个数连续异或两次其值不变。
public static void main(String[] args) {
int num1 = 1;
int num2 = 2;
num1 ^= num2;//将num1^num2的值赋值给num1
num2 ^= num1;//将num2的值赋值为num1开始的值
num1 ^= num2;//将num2的初始值赋值给num1
}
- 数值
通过两者之间的数值关系来操作,这种方式也有其他形式。
public static void main(String[] args) {
int num1 = 1;
int num2 = 2;
num1 -= num2;
num2 += num1;
num1 = num2 -num1;
}