Long,Integer,int,long,float数据比较

445 阅读1分钟

1.Integer,Long包装类同类型比较

引用类型(包装类) == 比较的是引用地址。equals已经被重写,比较的是值。
-128 -127之间,用的是cache里的对象,不会new新对象,所以==是相等的。

Long l1 = 127L;
Long l2 = 127L;
System.out.println(l1 == l2);              //true
System.out.println(l1.equals(l2));         //true
Long l3 = 128L;
Long l4 = 128L;
System.out.println(l3 == l4);              //false
System.out.println(l3.equals(l4));         //true

2.不同类型之间的比较 Long和Integer,long和integer

包装类比较,类型不相等为false。 基本数据类型比较,精度相等数值相等则为true。

Long l1 = 127L;
Integer i1 = 127;
//System.out.println(i1 == l1);             //不同包装类型,==会报错
System.out.println(i1.equals(l1));          //false,euqals源码为先比较类型是否和i1相等,再比较值,不相等则为false。

long ll1 = 128;
int ii1 = 128;
System.out.println(ll1 == ii1);             //true, 基本数据类型比较的是数值。所以相等。

//Integer和long型比较,会先装箱long,不管是equals还是==都是false。尽量不要出现这种写法,没有意义。

3. 数值和Long,Integer,Float比较。

包装类会自动拆箱。

System.out.println(1 == 1f);      //true
System.out.println(1 == 1l);      //true
System.out.println(1l == 128f);   //false