包装类
包装类的概念
java中的数据类型int,double等不是对象,无法通过向上转型获取到Object提供的方法,而像String却可以,只因为String是一个对象而不是一个类型。基本数据类型由于这样的特性,导致无法参与转型,泛型,反射等过程。为了弥补这个缺陷,java提供了包装类。
装箱与拆箱(使用整数Integer来举例)
1、装箱
把基本类型的数据,包装到包装类中(基本数据类型–>包装类)
通过构造方法进行装箱
① Integer(int value)
构造一个新分配的 Integer 对象,它表示指定的 int 值。
public static void main(String[] args) {
// 使用Integer(int value) 构造方法进行装箱
Integer in1 = new Integer(1);
// 输出发现in1中存的是1,所以该类重写了toString方法
System.out.println(in1);
}
② Integer(String s)
构造一个新分配的 Integer 对象,它表示 String 参数所指示的 int 值。
注意:String参数所指的必须是基本类型的字符串,如果传入的是"a"则会抛出异常
public static void main(String[] args) {
// 使用Integer(int value) 构造方法进行装箱
Integer in1 = new Integer("1");
// 输出得到的也是1
System.out.println(in1);
}
通过静态方法进行装箱
① static Integer valueOf(int i)
返回一个表示指定的 int 值的 Integer 实例。
public static void main(String[] args) {
// 使用valueOf(int i) 静态方法进行装箱
Integer in1 = Interger.valueOf(1);
// 输出得到的是1
System.out.println(in1);
}
② static Integer valueOf(String s)
返回保存指定的 String 的值的 Integer 对象。
public static void main(String[] args) {
// 使用valueOf(String s) 静态方法进行装箱
Integer in1 = Interger.valueOf("2");
// 输出得到的是2
System.out.println(in1);
}
2、拆箱
在包装类中取出基本类型的数据(包装类–>基本类型的数据)
通过成员方法进行拆箱
int intValue()
以 int 类型返回该 Integer 的值。
public static void main(String[] args) {
// 使用valueOf(String s) 静态方法进行装箱
Integer in1 = Interger.valueOf("2");
// 使用成员方法intValue进行拆箱
int i = in1.intValue();
// 输出得到的是2
System.out.println(i);
}
自动装箱与拆箱(使用整数Integer来举例)
1、自动装箱
直接把int类型的正数赋值给包装类
Integer in = 1;就相当于Integer in = new Integer(1);
2、自动拆箱
in = in +2in是包装类,无法直接参与运算,可以自动拆箱转换为基本类型数据,再进行计算。相当于in.intVale() + 2,紧接着in = in.intVale() +2这又是一个自动装箱
举例说明自动装箱与自动拆箱:
public static void main(String[] args) {
/* 创建一个ArrayList集合,
* 但是该集合无法直接存储整数,只能存储Integer包装类
* /
ArrayList<Integer> list = new ArrayList<>();
// 当我们向list集合中添加了一个基本类型数据时,
// jdk默认帮我们进行了装箱操作
list.add(1);// 自动装箱 list.add(new Integer(1));
// 当我们获取集合中的值的受,我们获取的是Integer包装类
// 但是我们能用int类型接收,说明进行了自动拆箱
int a = list.get(0);// 自动拆箱 list.get(0).intValue();
}
基本类型与字符串之间的转换
1、基本类型->字符串(String)
(1)基本类型的值+""(最简单的方法,工作中常用)value
public static void main(String[] args) {
int i1 = 100;
String s1 = i1 + "";// s1为"100"
System.out.println(s1 + 200);// 输出结果为"100200"
}
(2)包装类的静态方法toString(参数),不是Object类中的toString()方法,一个是有参一个无参
public static void main(String[] args) {
String s1 = Integer.toSring(100);// s1为"100"
System.out.println(s1 + 200);// 输出结果为"100200"
}
(3)String类的静态方法valueOf(参数)
public static void main(String[] args) {
String s1 = String.valueOf(100);// s1为"100"
System.out.println(s1 + 200);// 输出结果为"100200"
}
2、字符串(String)- >基本类型
使用静态方法parseXXX(“字符串”)
Integer类:static int parseInt(String s)
Double类:static double parseDouble(String s)
public static void main(String[] args) {
int i1 = 100;
String s1 = i1 + "";// s1为"100"
int i = Integer.parseInt(s1);// i为int类型的100
System.out.println(i - 10)//输出的结果为90
}

浙公网安备 33010602011771号