一、首先值的范围在[-128,127]之间
如下:
Integer i1=59;
int i2=59;
Integer i3=Integer.valueOf(59);
Integer i4=new Integer(59);
System.out.println(i2==i1);
System.out.println(i3==i4);
System.out.println(i2==i4);
System.out.println(i1==i3);
运行可得,
调试可看到:i1,i3的地址值是一样的,i4地址不同。是因为直接使用Integer包装类进行赋值的话,会调用常量池中的对象,是不会产生新对象的。而用构造方法的话,就会新开辟一个堆空间。
Integer和int进行比较的话,会自动拆装箱,所以值是一样的。