美文网首页
一个奇怪的问题,希望有人可以解答一下(已解决)

一个奇怪的问题,希望有人可以解答一下(已解决)

作者: 淡看江湖等雨 | 来源:发表于2018-04-09 14:30 被阅读13次

    public static void main(String[] args) throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException {

            Integer a=1,b=2;

            System.out.println("before:a="+a+",b="+b);

            swap(a,b);

            System.out.println("after:a="+a+",b="+b);

    }

    private static void swap(Integer a, Integer b) throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException {

            Field field=Integer.class.getDeclaredField("value");

            field.setAccessible(true);

            int tmp=a.intValue();

            field.set(a, b);

            field.set(b, tmp);

    }

    以上代码在WIN10环境,JDK8下输出

    --- 2018-05-28

    前几天偶然想起来了Integer.cache的问题,把它带入这里,疑惑就可以解开了。因此,如果要实现交换,应该如下图所示:

    一定要new 一个出来

    相关文章

      网友评论

          本文标题:一个奇怪的问题,希望有人可以解答一下(已解决)

          本文链接:https://www.haomeiwen.com/subject/tmkihftx.html