Java 变量值交换的三种实现

来源:互联网 发布:js 支持base64编码 编辑:程序博客网 时间:2024/06/08 12:10
package com.base.first.calculate;


import java.util.Scanner;


/**
 * 
 * ClassName: ValueSwaps 
 * Description: 变量值互换
 *
 * @date 2016年5月17日下午5:30:12
 */
public class ValueSwaps {

@SuppressWarnings("resource")
public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

System.out.println("请输入第一个数:");
long num1 = sc.nextLong();

System.out.println("请输入第二个数:");
long num2 = sc.nextLong();

System.out.println("num1 = " + num1 + ", num2 = " + num2);

long[] calculate = swapsByCalculate(num1, num2);
System.out.println("swapsByCalculate:num1 = " + calculate[0] + ", num2 = " + calculate[1]);

long[] temp = swapsByShift(num1, num2);
System.out.println("swapsByTemp:num1 = " + temp[0] + ", num2 = " + temp[1]);

long[] shift = swapsByTemp(num1, num2);
System.out.println("swapsByShift:num1 = " + shift[0] + ", num2 = " + shift[1]);

}

/**
* 通过计算交换
* @param num1
* @param num2
* @return
*/
public static long[] swapsByCalculate(long num1, long num2){
long[] nums = new long[2];

nums[0] = num1 + num2;
nums[1] = nums[0] - num2;
nums[0] = nums[0] - nums[1];

return nums;
}

/**
* 通过借助变量交换
* @param num1
* @param num2
* @return
*/
public static long[] swapsByTemp(long num1, long num2){
long[] nums = new long[2];

long temp = num1;
nums[0] = num2;
nums[1] = temp;

return nums;
}

/**
* 通过移位交换变量
* @param num1
* @param num2
* @return
*/
public static long[] swapsByShift(long num1, long num2){
long[] nums = new long[2];

nums[0] = num1 ^ num2;
nums[1] = nums[0] ^ num2;
nums[0] = nums[0] ^ nums[1];

return nums;
}

}
0 0