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);
       }
 }