一、包装类的概述
Java提供了两个类型系统,基本类型与引用类型,使用基本类型在于效率。
基本数据类型的数据,使用起来非常的方便但是没有对应的方法来操作这些数据所以我们可以使用一个类把基本类型的数据包装起来这个类叫包装类在包装类中可以定义一些方法 ,用来操作基本类型的数据
很多情况,会创建对象使用,因为对象可以做更多的功能,如果想要我们的基本类型像对象一样操作,就可以使用基本类型对应的包装类,如下:
基本类型 | 对应的包装类(位于java.lang包中) |
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Characte |
boolean | Boolean |
二、装箱与拆箱
基本类型与对应的包装类对象之间来回转换的过程称为“装箱”与“拆箱”
- 装箱:从基本类型转换为对应的包装类对象
- 拆箱:从包装类对象转换为对应的基本类型
装箱:把基本类型的数据,包装到包装类中(基本类型的数据->包装类
构造方法:
Integer(int value) 构造一个新分配的 Integer 对象,它表示指定的 int 值。
Integer(String s) 构造一个新分配的 Integer 对象,它表示 String 参数所指示的 int 值。
传递的字符串必须是基本类型的字符串否则会抛出异常"100"正确 "a”抛出异常
静态方法:
static Integer valueOf(int i) 返回一个表示指定的 int 值的 Integer 实例。
tatic Integer valueOf(String s) 返回保存指定的 String 的值的 Integer 对象。
拆箱:在包装类中取出基本类型的数据(包装类->基本类型数据)
成员方法:
int intValue() 以 int 类型返回该 Integer 的值。
package Day12_Demo03;
/*
装箱:把基本类型的数据,包装到包装类中(基本类型的数据->包装类
构造方法:
Integer(int value) 构造一个新分配的 Integer 对象,它表示指定的 int 值。
Integer(String s) 构造一个新分配的 Integer 对象,它表示 String 参数所指示的 int 值。
传递的字符串必须是基本类型的字符串否则会抛出异常"100"正确 "a”抛出异常
静态方法:
static Integer valueOf(int i) 返回一个表示指定的 int 值的 Integer 实例。
tatic Integer valueOf(String s) 返回保存指定的 String 的值的 Integer 对象。
拆箱:在包装类中取出基本类型的数据(包装类->基本类型数据)
成员方法:
int intValue() 以 int 类型返回该 Integer 的值。
*/
public class Demo01Integer {
public static void main(String[] args) {
//装箱:把基本类型的数据,包装到包装类中(基本类型的数据->包装类
//构造方法
Integer in1=new Integer(1);//方法上有横线说明方法过时
System.out.println(in1);//1 重写了toString方法
Integer in2=new Integer("1");//方法上有横线说明方法过时
System.out.println(in2);//1
//静态方法
Integer in3=Integer.valueOf(1);
System.out.println(in3);//1
Integer in4=Integer.valueOf("1");
System.out.println(in4);//1
//拆箱:在包装类中取出基本类型的数据(包装类->基本类型数据)
int i=in1.intValue();
System.out.println(i);//1
}
}
三、自动装箱与自动拆箱
由于我们经常要做基本类型与包装类之间的转换,从Java5开始,基本类型与包装类的装箱拆箱动作可以自动完成
package Day12_Demo03;
import java.util.ArrayList;
/*
自动装箱与自动拆箱:
基本类型的数据和包装类之间可以自动的相互转换
JDK1.5之后出现的新特性
*/
public class Demo02Integer {
public static void main(String[] args) {
/*
自动装箱:直接把int类型的整数直接赋值给包装类
*/
Integer in=1;//就相当于Integer in1=new Integer(1);
/*
自动拆箱:in是包装类,无法直接参与运算,但是可以自动转换为基本类型数据再参与计算
*/
in=in+2;// in+2就相当于in.intValue()+2=3(自动拆箱) in=in+2就相当于in=new Integer(3),完成自动装箱
System.out.println(in);//3
//ArrayList集合无法直接存储整数,但是可以存储Integer包装类
ArrayList<Integer> list=new ArrayList<>();
list.add(1);//自动装箱list.add(new Integer(1));
int a=list.get(0);//自动拆箱 list.get(0).intValue();
}
}
四、基本类型与字符串之间的转换
1、基本类型转换为String
基本数据类型直接与“”相连即可:如34+“”
2、String转换为对应的基本类型
除了Character类之外,其他所有包装类都具有parseXxx静态方法可以将字符串参数转换为对应的基本类型:
- public static byte parseByte(String s):将字符串参数转换为对应的byte基本类型。
- public static short parseShort(String s):将字符串参数转换为对应的byte基本类型。
- 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基本类型。
基本类型与字符串之间的转换
基本类型-->字符串
1、基本类型数据的值+“”最简单的方式(工作中常用)
2、使用包装类的静态方法
static String toString(int i)返回一个表示指定整数的 String 对象。
3、使用String类中的静态方法
static String valueOf(int i) 返回 int 参数的字符串表示形式。
字符串-->基本类型
使用包装类的静态方法parseXxx
Integer类: static int parseInt(String s)将字符串参数作为有符号的十进制整数进行解析。
等等(Character类之外,其他所有包装类都具有parseXxx静态方法可以将字符串参数转换为对应的基本类型)
package Day12_Demo03;
/*
基本类型与字符串之间的转换
基本类型-->字符串
1、基本类型数据的值+“”最简单的方式(工作中常用)
2、使用包装类的静态方法
static String toString(int i)返回一个表示指定整数的 String 对象。
3、使用String类中的静态方法
static String valueOf(int i) 返回 int 参数的字符串表示形式。
字符串-->基本类型
使用包装类的静态方法parseXxx
Integer类: static int parseInt(String s)将字符串参数作为有符号的十进制整数进行解析。
等等(Character类之外,其他所有包装类都具有parseXxx静态方法可以将字符串参数转换为对应的基本类型)
*/
public class Demo03Integer {
public static void main(String[] args) {
//基本类型-->字符串
String s1=100+"";
System.out.println(s1+200);//100200
String s2=Integer.toString(100);
System.out.println(s2+200);//100200
String s3=String.valueOf(100);
System.out.println(s3+200);//100200
//字符串-->基础类型
int i=Integer.parseInt("100");
System.out.println(i+200);//300
int i2=Integer.parseInt("a");//报错NumberFormatException:数字格式异常,只能为对应的类型
System.out.println(i2);
}
}