1700440496
1700440497
}
1700440498
1700440499
return count;
1700440500
1700440501
}
1700440502
1700440503
上面以Integer和int为例说明了拆箱问题,其他7个包装对象的拆箱过程也存在着同样的问题。包装对象和拆箱对象可以自由转换,这不假,但是要剔除null值,null值并不能转化为基本类型。对于此类问题,我们谨记一点:包装类型参与运算时,要做null值校验。
1700440504
1700440505
1700440506
1700440507
1700440509
编写高质量代码:改善Java程序的151个建议 建议27:谨慎包装类型的大小比较
1700440510
1700440511
基本类型是可以比较大小的,其所对应的包装类型都实现了Comparable接口也说明了此问题,那我们来比较一下两个包装类型的大小,代码如下:
1700440512
1700440513
public class Client{
1700440514
1700440515
public static void main(String[]args){
1700440516
1700440517
Integer i=new Integer(100);
1700440518
1700440519
Integer j=new Integer(100);
1700440520
1700440521
compare(i, j);
1700440522
1700440523
}
1700440524
1700440525
//比较两个包装对象大小
1700440526
1700440527
public static void compare(Integer i, Integer j){
1700440528
1700440529
System.out.println(i==j);
1700440530
1700440531
System.out.println(i>j);
1700440532
1700440533
System.out.println(i<j);
1700440534
1700440535
}
1700440536
1700440537
}
1700440538
1700440539
代码很简单,产生了两个Integer对象,然后比较两者的大小关系,既然基本类型和包装类型是可以自由转换的,那上面的代码是不是就可打印出两个相等的值呢?让事实说话,运行结果如下:
1700440540
1700440541
false
1700440542
1700440543
false
1700440544
1700440545
false
[
上一页 ]
[ :1.700440496e+09 ]
[
下一页 ]