Java中常见包装类型Integer、BigDecimal等特点说明
一、包装类型和基本类型的区别
1、包装类型没有默认值都是 null,而基本类型有默认值
2、一般所有的DTO中属性必须全部使用包装类型,局部变量使用基本类型
3、一般接口全局统一响应的状态码属性,一般使用 Integer 类型
4、包装类型和基本类型用 == 比较会做拆箱操作,所以 Integer == int 可以正常比较
二、 以 Integer 为例,验证一下 Integer 类型的特点
说明:
Integer 类型变量在(-128到127)范围内,用 == 可以正确比较,但如果越过这个范围之外用 == 无法正确比较,必须使用 equals 才可以正确比较
验证:
1、Integer正常范围内 == 比较
//正常范围内 == 比较
Integer a = -128;
Integer b = -128;
System.out.println("Integer最小范围使用==比较:" + (b==a));
Integer c = 127;
Integer d = 127;
System.out.println("Integer最大范围使用==比较:" + (c==d));
输出:
2、正常范围内 equals 比较
//正常范围内 equals 比较
Integer a = -128;
Integer b = -128;
System.out.println("Integer最小范围使用equals比较:" + (a.equals(b)));
Integer c = 127;
Integer d = 127;
System.out.println("Integer最大范围使用equals比较:" + (c.equals(d)));
输出:
3、越过正常范围 == 比较
//越过正常范围 == 比较
Integer a = -129;
Integer b = -129;
System.out.println("Integer越过最小范围使用==比较:" + (a==b));
Integer c = 128;
Integer d = 128;
System.out.println("Integer越过最大范围使用==比较:" + (c==d));
输出:
4、 越过正常范围 equals 比较
//越过正常范围 equals 比较
Integer a = -129;
Integer b = -129;
System.out.println("Integer越过最小范围使用equals比较:" + (a.equals(b)));
Integer c = 128;
Integer d = 128;
System.out.println("Integer越过最大范围使用equals比较:" + (c.equals(d)));
输出:
三、总结
1、Integer 类型变量使用 == 进行比较的范围是 -128到127
2、Integer 类型变量使用 equals 进行比较没有范围限制
3、Integer 类型变量和 int 类型比较也没有范围限制