zoukankan      html  css  js  c++  java
  • Java中swap()实现

    Java中swap()实现

    1.今天可爱的谭老师发了一道题目,使用java写方法交换Integer类型数据,而且入参固定了,题目请下图:

    入参固定的话,当时想到的是重新定义一个自己的Integer类型,让它有get和set方法,直到看到贺大神,代码如下:

        public static void swap(Integer a,Integer b) throws Exception
        {
            Field field = Integer.class.getDeclaredField("value");
            field.setAccessible(true);
            field.setInt(a, a ^ b);
            field.setInt(b, a ^ b);
            field.setInt(a, a ^ b);
        }

    当时惊为天人,反射还能这么用的,还能修改final修饰的值,

    特此记下!

    然后谭老师发布来了他的答案,只有两行,实现了需求,我也惊为天人

        public static void swap(Integer a,Integer b) throws Exception
        {
            System.out.println("后a = " + b +"后b = " + a);
            System.exit(0);
        }
    View Code

    果然,知识和智慧是不可或缺的!

    哈哈哈!

    2.最后出来一个问题,set()和setInt()到底区别在哪里,兄弟们可以探讨下,因为用set方法后结果不是咱们想要的

        public static void swap3(Integer a,Integer b) throws Exception
        {
            Field field = Integer.class.getDeclaredField("value");
            field.setAccessible(true);
            Integer tmp = a;
            field.set(a, b);
            field.set(b, tmp);
        }

    最后,欢迎各位留言,欢迎大神解答!

  • 相关阅读:
    通用分页后台显示
    自定义的JSP标签
    Java反射机制
    Java虚拟机栈---本地方法栈
    XML建模实列
    XML解析与xml和Map集合的互转
    [离散数学]第二次作业
    [线性代数]2016.10.13作业
    [数字逻辑]第二次作业
    [线性代数]2016.9.26作业
  • 原文地址:https://www.cnblogs.com/doStudying/p/7851254.html
Copyright © 2011-2022 走看看