互换两个变量值。(至少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个变量)
原文地址:http://admxj.blog.51cto.com/10955090/1721296