包装类

包装类的概念

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
}
posted @ 2020-10-10 20:29  谢海川  阅读(28)  评论(0)    收藏  举报