java中Integer的细节【面试】

本文主要讲述Integer包装类的细节,通过创建Integer类的方式不同,探讨区别

示例代码如下:

 1 public class IntegerExercise {
 2     public static void main(String[] args) {
 3         Integer num1 = new Integer(1);
 4         Integer num2 = new Integer(1);
 5         System.out.println(num1 == num2); // false
 6 
 7         /*
 8         IntegerCache.low:-128
 9         IntegerCache.high:127
10         当i在-127到128范围内,在cache数组中取出
11         当i不在范围内,new Integer(i)
12          */
13         /*
14         public static Integer valueOf(int i) {
15             if (i >= IntegerCache.low && i <= IntegerCache.high)
16                 return IntegerCache.cache[i + (-IntegerCache.low)];
17             return new Integer(i);
18         }
19          */
20         // 由于i=1,在-128到127范围内,在cache数组中取值,仍是常量
21         Integer s1 = 1; // 自动封箱
22         Integer s2 = 1;
23         System.out.println(s1 == s2); // true
24 
25         // 128不在-128到127范围内,new Integer(128)
26         Integer n1 = 128;
27         Integer n2 = 128;
28         System.out.println(n1 == n2); // false
29     }
30 }

 

posted @ 2022-12-26 21:13  zwGitOne  阅读(16)  评论(0编辑  收藏  举报