-
包装类---包装类就是讲基本数据类型封装到类中。
范例:
这个时候的IntDemo类实际上就是int数据类型的包装类,利用intValue就可以实现基本数据类型变为对象的需求。
结论:将基本数据类型包装为一个类对象的本质就是使用Object进行接收处理。
在Java中为了方便开发,专门提供了包装类的使用,而对于包装类的使用,提供了两种类型。
- 对象型(Object的直接子类):Boolean , Character(char);
- 数据型(Number的直接子类):Byte , Double , Short , Long , Integer(int) , Float;
-
装箱与拆箱
装箱:将基本数据类型变为包装类对象,利用每一个包装类提供的构造方法实现装箱处理。
拆箱:将包装类中包装的基本数据类型取出,利用Number类中提供的六种方法(XXXValue( ),例如:intValue( ) )。
范例:手工装箱,拆箱
范例:自动装箱,拆箱
这个时候,依然存在“==”和“equals( )”问题
观察以下一段代码: (!!!大坑)
说明:对于Integer var = ?在[-128,127]区间内,Integer对象是在常量池产生,会复用已有对象,可以直接用“==”来判断值;但是这个区间之外的所有数据,都会在堆上产生,并不会复用已有对象,推荐使用equals( )方法进行判断。
阿里编码规范: 使用int还是Integer?
- 【强制】所有的POJO类属性必须使用包装数据类型。
- 【强制】RPC方法的返回值和参数必须使用包装数据类型。
- 【推荐】所有的局部变量使用基本数据类型。
-
字符串与基本数据类型转换
- String变为int类型(Integer类):public static int parseInt(String s) throws NumberFormatException
- String变为double类型(Double类):public static double parseDouble(String s) throws NumberFormatException
- String变为boolean类型(Boolean类):public static boolean parseBoolean(String s)
范例:将字符串变为int型
范例:将字符串变为double
注意:将字符串转为数字时,如果字符串的组成由非数字,那么转换就会出现错误(NumberFormatException)。
而字符串与boolean转换就不受此影响。
范例:将字符串转换为boolean
- 基本数据类型变为字符串:
- 任何数据类型使用了“+”连接空白字符串就变为了字符串类型。
- 使用String类中提供的valueOf( )方法,此方法不产生垃圾。