1. 程式人生 > >【java】-- 調戲Integer 包裝與解包裝

【java】-- 調戲Integer 包裝與解包裝

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