Java包装类型缓存池
2021-05-18 23:16:33
读代码,下面几个问号处,输出什么?
```
class Hello{
public static void main(String[] args){
Integer a = 127;
Integer b = 127;
System.out.println(a == b); // ?
Integer m = 128;
Integer n = 128;
System.out.println(m == n); // ?
int j = 128;
int k = 128;
System.out.println(j == k); // ?
Integer x = new Integer(127); // Note: Hello.java uses or overrides a deprecated API
Integer y = new Integer(127);
System.out.println(m == n); // ?
System.out.println(m.intValue() == n.intValue()); // ?
}
}
```
在 Java 8 中,Integer 缓存池的大小默认为 -128~127。在使用基本类型对应的包装类型时,如果缓存池中存在就可以直接使用缓冲池中的对象
基本类型对应的缓冲池如下:
* boolean values true and false
* all byte values
* short values between -128 and 127
* int values between -128 and 127
* char in the range \u0000 to \u007F