上一节我们谈到,编译器会自动帮我们做自动装包和拆包的操作。那么每次都在堆上new一个对象是不是比较耗费内存呢?事实上,对于通常使用的基本类型,java会在其方法区存储相应的值,而不会每次都去new一个。
比如看下面这个例子:
Integer a= 3;
Integer b=3;
System.out.println(a==b);
如果是重新分配大小的话,很显然结果应该是false,但这个结果是true。说明使用的是同一片内存。
事实上,当值在[-128,127]时,都是使用的方法区的变量,而不会重新new一个对象。