码迷,mamicode.com
首页 > 其他好文 > 详细

a=10,b=6,将其值互换。(至少3种方法,尝试不定义第3个变量)

时间:2015-12-10 09:38:01      阅读:160      评论:0      收藏:0      [点我收藏+]

标签:java   不使用中间变量   互换两个数   

互换两个变量值。(至少3种方法,尝试不定义第3个变量)

废话不多说直接上代码

package com.admxj.swap;
/*
 * 2015年12月7日23:49:20
 * Java可避免C语言的溢出错误
 * 方法四可能会出现溢出情况
 */
public class Day01 {
	public static void main(String[] args) {
		int[] arr = {-2147483449,2147483420};
		System.out.println("源数据 : int[0] = "+arr[0] + ", int[1] = "+arr[1]);
		//方法一
		swap_1(arr);
		System.out.println("方法一 : int[0] = "+arr[0] + ", int[1] = "+arr[1]);
		//方法二
		swap_2(arr);
		System.out.println("方法二 : int[0] = "+arr[0] + ", int[1] = "+arr[1]);
		//方法三
		swap_3(arr);
		System.out.println("方法三 : int[0] = "+arr[0] + ", int[1] = "+arr[1]);
		//方法四
//		swap_4(arr);
//		System.out.println("方法四 : int[0] = "+arr[0] + ", int[1] = "+arr[1]);
		//方法5
		swap_5(arr);
		System.out.println("方法五 : int[0] = "+arr[0] + ", int[1] = "+arr[1]);
		swap_6(arr);
		System.out.println("方法六 : int[0] = "+arr[0] + ", int[1] = "+arr[1]);
		swap_7(arr);
		System.out.println("方法七 : int[0] = "+arr[0] + ", int[1] = "+arr[1]);
	}
	/*
	 * 求和, 再减去另一个数
	 */
	private static void swap_1(int[] arr){
		arr[0] = arr[0] + arr[1];
		arr[1] = arr[0] - arr[1];
		arr[0] = arr[0] - arr[1];
	}
	/*
	 * 求差, 与上面类似
	 */
	private static void swap_2(int[] arr){
		arr[0] = arr[0] - arr[1];
		arr[1] = arr[0] + arr[1];
		arr[0] = arr[1] - arr[0];
	}
	/*
	 * 异或运算(对一个数异或两次值不变)
	 */
	private static void swap_3(int[] arr){
		arr[0] = arr[0] ^ arr[1];
		arr[1] = arr[0] ^ arr[1];
		arr[0] = arr[1] ^ arr[0];
	}
	/*
	 * 
	 */
	private static void swap_4(int[] arr){
		arr[0] = arr[1]*arr[0];
		arr[1] = arr[0]/arr[1];
		arr[0] = arr[0]/arr[1];
	}
	/*
	 * 中间变量temp
	 */
	private static void swap_5(int[] arr){
		int temp = arr[0];
		arr[0] = arr[1];
		arr[1] = temp;
	}
	
	/*
	 * (参照齐星)
	 */
	private static void swap_6(int[] arr){
		arr[0] = arr[1] + (arr[1]=arr[0])*0;
	}
	private static void swap_7(int[] arr){
		arr[0] = (arr[1]+arr[0]) - (arr[1] = arr[0]);
	}
}


本文出自 “生命不息,折腾不止” 博客,请务必保留此出处http://admxj.blog.51cto.com/10955090/1721296

a=10,b=6,将其值互换。(至少3种方法,尝试不定义第3个变量)

标签:java   不使用中间变量   互换两个数   

原文地址:http://admxj.blog.51cto.com/10955090/1721296

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!