面试小结

  • 有两个int类型的数a和b,写出交换它们值的方法
package com.cqupt.xxx;

public class Demo {

	public static void main(String[] args) {
		int a = 111;
		int b = 222;

		// 方法1: 使用中间变量
		Method1(a, b);

		// 方法2: 使用加减法
		Method2(a, b);

		// 方法3:使用乘除法(这里除数不能为0
		Method3(a, b);

		// 方法4:使用异或法
		Method4(a, b);

	}

	private static void Method1(int a, int b) {
		int temp = a;
		a = b;
		b = temp;
		outPrint(a, b);
	}

	private static void Method2(int a, int b) {
		a = a + b;
		b = a - b;
		a = a - b;
		outPrint(a, b);
	}

	private static void Method3(int a, int b) {
		a = a * b;
		b = a / b;
		a = a / b;
		outPrint(a, b);
	}

	private static void Method4(int a, int b) {
		a = a ^ b;
		b = a ^ b;
		a = a ^ b;
		outPrint(a, b);
	}

	private static void outPrint(int a, int b) {
		System.out.println("a: " + a);
		System.out.println("b: " + b);
		System.out.println("-----------------");
	}

}

输出结果:
a: 222
b: 111
-----------------
a: 222
b: 111
-----------------
a: 222
b: 111
-----------------
a: 222
b: 111
-----------------
  • 或、与、异或
|  是按位或 
^ 是按位异或    
& 是按位与

例如:
int x = 5;
int y = 11;

过程:
x=5  (0101二进制)
y=11 (1011二进制)

结果:
x|y = 1111 = 15
x&y = 0001 = 1
x^y = 1110 = 14
原文地址:https://www.cnblogs.com/wumz/p/7644915.html