【java】两个数的交换(面试)

/*

    面试题:

        请自己实现两个整数变量的交换

        注意:以后讲课的过程中,我没有明确指定数据的类型,默认int类型。

*/

package test922;

/**
 * @author rocling
 * @since 2018-09-22
 */
public class OperatorTest {

	public static void main(String[] args) {
		int a = 10;
		int b = 20;
		
		System.out.println("a:" + a + ",b:" + b);
		System.out.println("-----------------------");

		// 方式1:使用第三方变量(开发中用的)
		int c = a;
		a = b;
		b = c;
		System.out.println("a:" + a + ",b:" + b);
		System.out.println("-----------------------");

		// 方式2:用位异或实现(面试用)
		// 左边:a,b,a
		// 右边:a ^ b
		a = a ^ b;
		// a^b^b=a
		b = a ^ b;
		// a^b^a=b
		a = a ^ b;
		System.out.println("a:" + a + ",b:" + b);
		System.out.println("-----------------------");

		// 方式3:用变量相加的做法
		a = a + b; // a = 30
		b = a - b; // b = 10
		a = a - b; // a = 20
		System.out.println("a:" + a + ",b:" + b);
		System.out.println("-----------------------");

		// 方式4:一句话搞定
		b = (a + b) - (a = b);
		System.out.println("a:" + a + ",b:" + b);
	}

}

运行结果: 

a:10,b:20
-----------------------
a:20,b:10
-----------------------
a:10,b:20
-----------------------
a:20,b:10
-----------------------
a:10,b:20

猜你喜欢

转载自blog.csdn.net/rocling/article/details/82818241
今日推荐