Javaは2つの変数の値を交換します(3つの方法)
1037 ワード
変数交換(Java面接試験問題):int a=10;int b = 20; 1.int temp=aを中間量で交換する.a = b; b = temp; 原理:2杯の水交換コップと同様に、3番目のコップを借りて実現する必要がある.2.シフト演算交換a=a^b;b = a ^ b; a = a ^ b; 原理:1つの数が別の数に対して異なっている(2進数になるのは両側が同じならfalse、異なるならtrue)、または2回で、この数は変わらない.a = a ^ b; このときaの値はa^b b=a^bである.このときのaは、上記の演算によりa^bとなるので、b=a^b^b=aとなる.a = a ^ b; このときのbはまた上の演算でaになるので、a=a^b^a=b;2つの数の交換3、数値加算減算交換a=a+bを実現する.b = a - b; a = a - b; 原理:まず2数の和を求めてから減算することで交換する.a = a + b; このときaの値は10+20=30である.b = a - b; このときのaは上記の演算により2数の和30となるので、b=30-20(元のbの値)=10(元のaの値);a = a - b; このときのbは上記の演算により10となるので、a=30-10(元のaの値)=20(元のbの値)となり、2つの数の交換が実現される.コードは次のとおりです.
public class Demo {
/**
* :
* a b ,
* @param args
*/
public static void main(String[] args) {
int a = 10;
int b = 20;
/*
* 1:
* int c = a;
* a = b;
* b = c;
*/
/*
* 2:
* a = a ^ b;
* b = a ^ b;
* a = a ^ b;
*/
// 3:
a = a + b;
b = a - b;
a = a - b;
System.out.println("a :"+a);
System.out.println("b :"+b);
}
}