int 与 Integer 类型的比较

来源:互联网 发布:单片机433m超再生模块 编辑:程序博客网 时间:2024/06/05 05:30

一、两个new出来的Integer对象

public void test(){Integer m=new Integer(1);Integer n=new Integer(1);System.out.println(m==n);}//结果返回false  //解析:都是new出来的对象,在堆中,比较的是两个地址值;

二、new一个对象与赋值一个对象

public void test(){Integer m=new Integer(1);Integer n=1;System.out.println(m==n);}//结果返回false//解析:m在堆中,n在常量池中,都是Integer类型,比较的是地址,因此不等。


三、两个对象的赋值

(1)值在-128~127之间(可取-128和127)

public void test(){Integer m=-127;Integer n=-127;System.out.println(m==n);Integer m1=Integer.valueOf(-127);Integer n1=Integer.valueOf(-127);System.out.println(m1==n1);}//结果返回true//解析:创建的是同一个对象,这些对象已经缓存在IntegerCache里面了,因此相等

(2)值不在-127~128之间(可取-128和127)

public void test(){Integer m=128;Integer n=128;System.out.println(m==n);Integer m1=Integer.valueOf(128);Integer n1=Integer.valueOf(128);System.out.println(m1==n1);}//结果返回false//解析:比较的是地址

四、int 和 Integer对象

public void test(){int m=128;Integer n=new Integer(128);System.out.println(m==n);
int m2=128; Integer n2=128; System.out.println(m2==n2);int m3=128;  Integer n3=Integer.valueOf(128);  System.out.println(m3==n3);}//结果返回true//Integer封装类型将会自动拆箱变为基本的数据类型int 后再进行比较,所以返回true





0 0
原创粉丝点击