不用中间变量交换两个变量的值

解法1:

public void swapValue(int a ,int b){
    //例:a=3,b=2  
    a+=b;//a=5,b=2
    b=a-b;//b=3,a=5
    a-=b;//a=2,b=3
}

解法2:

public static void swapValue(int a, int b) {
    //例:a=4,b=7
    a^=b;//a=3,b=7
    b^=a;//b=4,a=3
    a^=b;//a=7,b=4
    //可以简写为
    //a^=b^=a^=b;
}

解法3:

public static void swapValue(int a, int b) {
    //例:a=9,b=10
    //这里需要分布解释,根据计算的优先级,会先执行括号里面的内容
    //括号里是将a的值赋给b
    //表达式会变成 --> a = a + b - a;
    //从而完成值的交换
    a = a + b - (b = a);
}

解法3还有另一种方式:

public static void swapValue(int a, int b) {
    a = b + (b = a) * 0;
}

 

以上几种是小编总结的“不用中间变量交换两个变量的值”,还请大神指教

posted @ 2019-07-08 12:00  chbyiming  阅读(266)  评论(0编辑  收藏  举报