一、装箱与拆箱
一、基本概念
- 装箱:把基本类型的数据,包装到包装类当中(基本类型的的数据——>包装类)
构造方法:
- Integer(int Value) 构造一个新分配的Integer对象,它表示指定的int值
- Integer(String s) 构造一个新分配的Integer对象,它表示String参数所指示的
注意:传递的字符串,必须是基本类型的字符串,否则会抛出异常 “100” 正确 “a” 抛异常
静态方法:
- static Integer valueOf(int i) 返回一个表示指定的int值的Integer实例。
- static Integer valueOf(String s)返回保存指定的String的值的Integer对象。
- 拆箱:在包装类中取出基本类型的数据(包装类——>基本类型的数据)
成员方法:
- int intValue() 以int类型返回该Integer的值。
二、代码示例
public class Demo01Integer {
public static void main(String[] args) {
// 装箱:把基本类型的数据,包装到包装类当中(基本类型的的数据——>包装类)
// 构造方法
Integer integer1 = new Integer(5);
System.out.println(integer1); // 5 重写了toString方法
Integer integer2 = new Integer("5");
System.out.println(integer2); // 5
// 静态方法
Integer integer3 = Integer.valueOf(1);
System.out.println(integer3); // 1
Integer integer4 = Integer.valueOf("1");
System.out.println(integer4); // 1
System.out.println("=========");
// 拆箱:在包装类中 取出基本类型的数据(包装类——>基本类型的数据)
int i = integer1.intValue();
System.out.println(i);
}
}
二、自动装箱与拆箱
自动装箱与自动拆箱是基本类型的数据和包装类之间可以自动的相互转换。是JDK1.5之后出现的新特性。
代码举例:
import java.util.ArrayList;
public class Demo02Integer {
public static void main(String[] args) {
/*
自动装箱:直接把int类型的整数赋值给包装类
*/
Integer integer = 1; // 相当于Integer integer = new Integer(1);
/*
自动拆箱:integer是包装类,无法直接参与运算,可以自动转换为基本数据类型,再进行计算
*/
integer = integer + 2; // 相当于integer = integer.intValue() + 2 = 3 又是一个自动装箱
ArrayList<Integer> list = new ArrayList<>();
/*
ArrayList集合无法直接存储整数,但可以存储Integer包装类
*/
list.add(1); // -->自动装箱 list.add(new Integer(1));
int a = list.get(0); // -->自动拆箱 list.get(0).intValue();
}
}
三、基本类型与字符串类型之间的相互转换
-
基本类型–>字符串(String),有三种常用方法:
1). 基本类型的值+"" 最简单的方法,工作中常用。
2). 包装类的静态方法toString(参数),不是Object类的toString(),是它的重载static String toString(int i) 返回一个表示指定整数的String对象。
3). String类的静态方法valueOf(参数)static String valueOf(int i) 返回int 参数的字符串表示形式。 -
字符串(String)–>基本类型,使用包装类的静态方法parseXXX(”数值类型的字符串“);
Integer类: static int parseInt(String s)
Double类: static double parseDouble(String s)
代码示例:
public class Demo03Integer {
public static void main(String[] args) {
// 基本类型-->字符串(String)
int i1 = 100;
String s1 = i1 + "";
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
System.out.println("=====================");
// 字符串(String)-->基本类型
int i = Integer.parseInt(s1);
System.out.println(i - 10);
// int a = Integer.parseInt("a");
// System.out.println(a); // 报异常NumberFormatException
}
}