包装类
5.1 概述
java提供了两个类型系统,基本类型与引用类型,使用基本类型在于效率,然而很多情况,会创建对象使用,因为对象可以做更多的功能,如果想要我们的基本类型像对象一样操作,就可以使用基本类型对应的包装类,如下:
基本类型 | 对应的包装类(位于java.lang包中) |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
5.2 装箱拆箱
基本类型与对应的包装类对象之间,来回转换过称称为“装箱”与“拆箱”:
- 装箱:从基本类型转换为对应的包装类对象。(基本类型的数据-->包装类)
- 构造方法:
- Integer(int value)构造一个新分配的 Integer 对象,他表示指定的 int 值。
- Integer(String s)构造一个新分配的Integer对象,它表示 String 参数所指示的 int 值。
- 传递的字符串,必须是基本类型的字符串,否则会抛出异常 "100" 正确 "a" 抛异常
- 静态方法:
- static Integer valueOf(int i) 返回一个指定的 int 值的 Integer 实例。
- static Integer valueOf(String s) 返回保存指定的String 的值的 Integer 对象
- 拆箱:从包装类对象转换为对应的基本类型。(包装类-->基本类型的数据)
- 成员方法:
- int intValue() 以 int 类型返回该 Integer 的值。
- 成员方法:
用Integer与int为例:
基本类型 -- > 包装对象
// 使用构造函数
Integer i= new Integer(6);
// 使用包装类中的valueOf方法
Integer ii = Integer.valueIf("6");
包装对象-->基本数值
int num = i.intvalue();
5.3 自动装箱与自动拆箱
自动装箱与自动拆箱:基本类型的数据和包装类之间可以进行相互转换
JDK1.5之后出现的新特性
-
自动装箱:直接把int类型的整数赋值于包装类
如:Integer in = 1;就相当于 Integer in = new Integer(1);
-
自动拆箱:int是包装类,无法直接参与运算,可以自动转换为基本数据类型,再进行计算
如:in + 2;就相当于 in.intVale() + 2 = 3;
int = in.intVale() + 2 = 3 又是一个自动装箱
Integer i = 4;//自动装箱。相当于Integer i = Integer.valueOf(4);
i = i + 5;//等号右边:将i对象转成基本数值(自动拆箱) i.intValue() + 5;
//加法运算完成后,再次装箱,把基本数值转成对象。
5.4基本类型与字符串之间的转换
1.基本类型-->字符串(String)
-
基本类型的值+" " 最简单的方法(工作中常用)
-
包装类的静态方法toString(参数),不是Object类的toString方法()重载
static String toString(int i)返回一个表示指定整数的string 对象。
-
String类的静态方法valueOf(参数)
static String valueOf(int i)返回 int 参数的字符串表示形式。
2.字符串(String)--> 基本类型
使用包装类的静态方法parseXXX("字符串");
如:
Integer类: static int parseInt(Sting s)
Double类:static double parseDouble(String s);
public static void main(String[] args) {
// 基本类型-->字符串
int i1 = 100;
String s1 = i1 +"";
System.out.println(s1+999);
String s2 = Integer.toString(100);
System.out.println(s2+300);
String s3 = String.valueOf(100);
System.out.println(s3 + 100);
// 字符串(String)--> 基本类型
int i = Integer.parseInt(s1);
System.out.println(i - 10);
// 不能转换字符串报错 数字格式异常 NumberFormatException
/*int a = Integer.parseInt("a");
System.out.println(a);*/
}