装箱与拆箱
基本类型与对应的包装类对象之间,来回转换的过程称为装箱与拆箱
装箱:从基本类型转换为对应的包装类对象。
拆箱:从包装类对象转换为对应的基本类
手动装箱:
Integer i = new Integer(4);//使用构造函数函数
Integer i = Integer.valueOf(4);//使用包装类中的valueOf方法
手动拆箱:
int num = i.intValue()
自动装箱:
Integer i = 4;//自动装箱。相当于Integer i = Integer.valueOf(4);
自动拆箱:
i = i + 5;//等号右边:将i对象转成基本数值(自动拆箱) i.intValue() + 5;
//加法运算完成后,再次装箱,把基本数值转成对
byte常量池
Integer类中内置了一个byte常量池。
在自动装箱时,会先判断要装的基本数据类型是否在byte的取值范围之内(-128~127),
如果不在,直接new。
如果在,不会new,而是从这个常量池中直接获取。
所以类似String的常量池 new出来的和常量池中的地址是不一样的 都在常量池中的话就是同一个地址
好处:
如果没有这样的常量池,那么每一次都是new。
如果有了这样的常量池,那么在使用byte范围内的值时,我们就可以重复利用。节省了内存。
而在我们实际开发中,byte取值范围之内的数,使用频率是最高的。
基本类型转String
举例:int num = Integer.parseInt("100"); //如果无法转换成相应类型 会抛出异常
其他的:(char的包装类Character类除外)
public static byte parseByte(String s) :将字符串参数转换为对应的byte基本类型。
public static short parseShort(String s) :将字符串参数转换为对应的short基本类型。
public static int parseInt(String s) :将字符串参数转换为对应的int基本类型。
public static long parseLong(String s) :将字符串参数转换为对应的long基本类型。
public static float parseFloat(String s) :将字符串参数转换为对应的float基本类型。
public static double parseDouble(String s) :将字符串参数转换为对应的double基本类型。
public static boolean parseBoolean(String s) :将字符串参数转换为对应的boolean基本类