int int1=12;
int int2=12;
Integer integer1=new Integer(12);
Integer integer2=new Integer(12);
Integer integer3=new Integer(127);
Integer a1=127;
Integer a2=127;
Integer a=128;
Integer b=128;
int1==int2//true
int1==integer1//true 当integer与int进行==比较时,integer就会拆箱成一个int类型(这里的integer不管是New创建,还是直接赋值)
integer1==integer2//false
integer3==a1//false integer3是一个对象类型,a1是一个常量存放内存的位置不一样
a1==a2//true -128到127之间的数,会进行缓存,所以a1、a2相等
a==b//false 当超过这个范围就是new Integer()来new一个对象了,所以a、b不等
注:a.equas(b) //true 这里equas实际调用的是Integer的intValue(),比较的是基本类型的值
Double d1=100.0;
Double d2=100.0;
Double d3=200.0;
Double d4=200.0;
d1==d2//false
d3==d4//false 在某个范围内的整型数值的个数是有限的,而浮点数却不是
注:
Integer直接赋值的方式实际调用了Integer的valueOf方法(反编译可看到)