int和Integer的区别
int是八大基本数据类型(byte,char,short,int,long,float,double,boolean)之一,而Integer是int 包装类,所以
- int的默认值是0
- Integer的默认值是null
在JDK1.5以后,Integer 有自动装箱和拆箱的语法糖。
Integer创建对象时,若数值在[-128,127]区间,第一次声明会将值放入缓存,第二次时会直接将上次缓存里的值给对象,所以地址不变,不是重新创建一个Ingeter 对象。
public static void main(String[] args) {
Integer i = 10;
Integer j = 10;
System.out.println(i == j);
}//结果为true分析源码我们可以知道在 i >= -128 并且 i <= 127 的时候,第一次声明会将 i 的值放入缓存中,第二次直接取缓存里面的数据,而不是重新创建一个Ingeter 对象。
那么第一个打印结果因为 i = 10 在缓存表示范围内,所以为 true。当值为128时,不放入缓存,会重新创建对象,地址变化:
Integer i =128;
Integer j = 128;
System.out.println(i == j);
}//结果为false两个Integer对象比较时,使用equals
定义泛型时,必须使用Integer,而不是int,泛型参数必须是一个类,即Object的子类
Map<String,Object> map1
Map<Integer,Object> map2