10.1.3自动装箱(auto_boxing)与自动拆箱(unboxing)
JDK1.5之前需要手动装箱与拆箱,JDK1.5之后支持自动装箱与自动拆箱。
1. 自动装箱
基本数据类型就自动的封装到与它相同类型的包装中,如:
Integer i = 100;
本质上是,编译器编译时为我们添加了:
Integer i = new Integer(100);
2. 自动拆箱
包装类对象自动转换成基本类型数据。如:
int a = new Integer(100);
本质上,编译器编译时为我们添加了:
int a = new Integer(100).intValue();
10.1.4 包装类的作用
1. 数据类型的范围
MIN_VALUE、MAX_VALUE
Float和Double中还有正无穷大POSITIVE_INFINITY、负无穷大NEGATIVE_INFINITY,还NaN,是Not a Number的缩写。NaN 用于处理计算中出现的错误情况,比如 0.0 除以 0.0 或者求负数的平方根。
程序员可以利用这种定制的 NaN 值中的特定位模式来表达某些诊断信息。
2. 数据类型的转换
1、字符串转成包装类对象
(1)使用包装类型的构造方法
除了Character类型,其他7中类型都有1个构造方法,其参数是字符串类型
例如:
Integer t2=new Integer("500");//参数是字符串,字符串的值是必须对应的数值
Integer t3=new Integer("abc");// java.lang.NumberFormatException: For input string: "abc"
(2)使用包装类的valueOf方法
例如:Integer i=Integer.valueOf("500");
2、字符串转成基本数据类型
通过包装类的parseXxx(String s)静态方法
例如:int i=Integer.parseInt("500");
3. 包装类的其他方法
1、Integer类型
public static String toBinaryString(int i) //把十进制转成二进制
public static String toHexString(int i) //把十进制转成十六进制
public static String toOctalString(int i) //把十进制转成八进制
2、Character类型
public static char toUpperCase(char ch) //转成大写字母
public static char toLowerCase(char ch) //转成小写字母
其他的查看相关API文档即可
3、equals
按照包装的基本数据类型的值比较
4、compareTo
按照包装的基本数据类型的值比较
10.1.5 缓存问题
我们在编程时大量需要值在-128到127范围之间的Integer对象。如果只能通过new来创建,需要在堆中开辟大量值一样的Integer对象。这是相当不划算的,IntegerCache.cache很好的起到了缓存的作用。
缓存
byte Byte -128–127
short Short -128–127
int Integer -128—127
long Long -128—127
float Float 不缓存
double Double 不缓存
char Character 0–127
boolean Boolean TURE,FALSE
本教程由尚硅谷教育大数据研究院出品,如需转载请注明来源。