【java】-- 调戏Integer 包装与解包装

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qfzhangwei/article/details/78694287

1

 直接上代码


public class IntergeTest {
    public static void main(String[] args) throws NoSuchFieldException, IllegalAccessException {
        Integer a = 2;
        Integer b = 3;

        Field value = Integer.class.getDeclaredField("value");
        value.setAccessible(true);
        int g = a;
        value.set(a,b);
        value.set(b,g);
        System.out.println(a);
        System.out.println(b);

        Class<?>[] declaredClasses = Integer.class.getDeclaredClasses();
        Field cache = declaredClasses[0].getDeclaredField("cache");
        cache.setAccessible(true);

        //原因在这里
        System.out.println(JSON.toJSONString(cache));
        System.out.println(JSON.toJSONString(cache.get(a)));

        // 调戏效果
        Integer q = 2;
        System.out.println(q);
        
    }

}

2 运行结果

3
3
{"accessible":true,"annotatedType":{"annotatedGenericComponentType":{"annotations":[],"declaredAnnotations":[],"type":"java.lang.Integer"},"annotations":[],"declaredAnnotations":[],"type":"[Ljava.lang.Integer;"},"annotations":[],"declaringClass":"java.lang.Integer$IntegerCache","enumConstant":false,"genericType":"[Ljava.lang.Integer;","modifiers":24,"name":"cache","synthetic":false,"type":"[Ljava.lang.Integer;"}
[-128,-127,-126,-125,-124,-123,-122,-121,-120,-119,-118,-117,-116,-115,-114,-113,-112,-111,-110,-109,-108,-107,-106,-105,-104,-103,-102,-101,-100,-99,-98,-97,-96,-95,-94,-93,-92,-91,-90,-89,-88,-87,-86,-85,-84,-83,-82,-81,-80,-79,-78,-77,-76,-75,-74,-73,-72,-71,-70,-69,-68,-67,-66,-65,-64,-63,-62,-61,-60,-59,-58,-57,-56,-55,-54,-53,-52,-51,-50,-49,-48,-47,-46,-45,-44,-43,-42,-41,-40,-39,-38,-37,-36,-35,-34,-33,-32,-31,-30,-29,-28,-27,-26,-25,-24,-23,-22,-21,-20,-19,-18,-17,-16,-15,-14,-13,-12,-11,-10,-9,-8,-7,-6,-5,-4,-3,-2,-1,0,1,3,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127]
3

3 解释: -128 - 127 之间的Integer是缓存对象。

Process finished with exit code 0

猜你喜欢

转载自blog.csdn.net/qfzhangwei/article/details/78694287
今日推荐