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

437人浏览 / 0人评论
互换两个变量值。(至少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]);
    }
}