一 包装类
什么是包装类?
包装类其实就是8种基本数据类型对应的引用类型。
为什么提供包装类?
1、Java为了实现一切皆对象,为8种基本类型提供了对应的引用类型。
基本类型的数值不是对象,不能调用对象的toString()、hashCode()、getClass()、equals()等方法。所以Java提供了针对每种基本类型的包装类型。
2、集合和泛型其实也只能支持包装类型,不支持基本数据类型。
包装类特点
包装类的变量的默认值可以是null,容错率更高。
Integer和int的区别
1、integer是int的包装类,int是Java的一种基本数据结构
2、integer变量必须实例化后才能使用,int变量不需要
3、integer实际是对象的引用,int是直接存储数据值
4、integer的默认值是null,int的默认值是0
二 装箱和拆箱
自动装箱:把基本类型用它们对于的引用类型包装起来。
如
Integer a=5;
这就是自动装箱,自动装箱是编译期底层调用了Integer.valueOf()这个方法。
Integer a=5 // Integer a=Integer.valueOf(5);
自动拆箱:包装类型的变量可以直接赋值给基本数据类型的变量。
拆箱:跟自动装箱的方向相反,将Integer及Double这样的引用类型的对象重新简化为基本类型的数据。
如:
int b=a;// 底层是 int b=a.intValue
编译器底层会调用变量名.intValue()方法返回该Integer对象的int值
注意:自动装箱和拆箱是由编译器来完成的,编译器会在编译期根据语法决定是否进行装箱和拆箱动作。
三 基本数据类型和字符串的转换
String类中内置的方法很多,所以会有时候我们会选择将基本数据类型转换为字符串然后使用内置的方法 那么这里我们也分为两个方面:
(1)基本类型转换为字符串 基本类型转换为字符串的方法有三种方法:
1使用包装类中的toString()方法
2使用String类的valueOf()方法
3加入空字符
String i = Integer.toString(h);//使用包装类中的toString()方法
String i = String.valueOf(h);//使用String类的valueOf()方法
String i = h + "";//加入空字符123
int h = 10;
String i = Integer.toString(h);//使用包装类中的toString()方法
String i1 = String.valueOf(h);//使用String类的valueOf()方法
String i2 = h + "";//加入空字符123
System.out.println(i);
System.out.println(i1);
System.out.println(i2);
(2)字符串转换为基本类型 包装类转换为基本类型有两种方法:
1 使用包装类中的parseXXX()方法
除了Character类之外,其他所有包装类都具有parseXxx静态方法可以将字符串参数转换为对应的基本类型:
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基本类型。
2 使用包装类中的valueOf()方法
int j = Integer.parseInt(i);//使用包装类中的parseXXX()方法
int j = Integer.valueOf(i);//使用包装类中的valueOf()方法
注意:如果字符串参数的内容无法正确转换为对应的基本类型,则会抛出
java.lang.NumberFormatException
异常。