dabocaiqq
2020-03-24 17:35
采纳率: 66.6%
浏览 209

高分悬赏:Java语言使用一个函数交换两个数字,要完整的代码

高分悬赏:Java语言使用一个函数交换两个数字,要完整的代码

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • 毕小宝 2020-05-09 11:04
    已采纳

    不使用第3个变量 把两个整数进行交换的代码:

            int a=120;
            int b=11;
            a = a^b;
            b = a^b; //此时b就是原来的a 了 120  (a^b)^b ==> a^(b^b) ==> a^0 ==> a
            a = a^b; //这就是真正的 a^b^a 就是原来的b 了 11  (a^b)^a ==> b^(a^a) ==> b^0 ==> b
    
    
    点赞 打赏 评论
  • piaoyiren 2020-03-25 14:54

    public static void swap(int a,int b) {
    int temp =0;
    temp = a;
    a=b;
    b=temp;
    }

    点赞 打赏 评论
  • sanshizhang 2020-03-25 15:06

    使用反射!
    package com.test;

    import java.lang.reflect.Field;

    public class Test2 {

    public static void main(String[] args) throws Exception{
        // TODO Auto-generated method stub
        Integer i = 200;
        Integer j = 400;
        reverse(i,j);
        System.out.println("i====" + i);
        System.out.println("j====" + j);
    
    }
    
    private static void reverse(Integer i, Integer j) throws Exception{
        Integer t = new Integer(i);
        Field field_i = Integer.class.getDeclaredField("value");
        field_i.setAccessible(true);
        field_i.set(i,j);
    
        Field field_j = Integer.class.getDeclaredField("value");
        field_j.setAccessible(true);
        field_j.set(j,t);
    
    
    }
    

    }
    输出结果:
    i====400
    j====200

    点赞 打赏 评论

相关推荐 更多相似问题