在很多应用场景中我们需要将两个变量的值进行交换,在这里总结了3种方式以及它们的利弊.
第一种,可以定义一个额外的变量用于进行数值交换,这是种最普通但实用性又很强的方法
int a = 1;
int b = 2;
int c = a; //c = 1;
a = b; //a=2;
b = c; //b = 1;
第二种利用加减法的操作,这种方法可以无需在定义一个新变量就能实现数值交换,但有一个致命的缺陷,a+b
这种操作可能会导致数据的溢出,导致最后交换出来的数值完全不对.
int a = 1;
int b = 2;
a = a + b;// a =1+2=3
b = a - b; // b=3-2=1
a = a - b;// a = 3-1=2
第三种利用位运算符实现,这是利用位运算的方法,不仅不要开辟新变量,而且效率更高.
int a = 1;
int b = 2;
a = a ^ b;
b = a ^ b;
a = a ^ b;
总结起来,后两种方法都只能应用于数值类型的,如果是引用类型的就无法使用了,但第一种方法却能够依旧使用,所以平平无奇的方法反而更有效.