1. 包装类介绍
Java语言中的基本数据类型都有一个包装类与其对应,并且包装类与基本数据类型之间能够相互转换。
我们把基本数据类型的变量转换为与之对应的包装类型的过程称之为装箱。
相反的,把包装类对象转换为相对应的基本数据类型的过程称之为拆箱。
JDK1.5 之后引入了自动拆装箱的语法,也就是在进行基本数据类型和对应的包装类转换时,系统将自动进行。所以在实际使用时,两者之间的类型转换将变得很简单,系统将自动实现对应的转换。
2. 包装类与基本数据类型的对应关系
- byte型对应的包装类为Byte类
- short型对应的包装类为Short类
- int型的包装类为Integer类
- long型对应的包装类为Long类
- float型对应的包装类为Float类
- double型对应的包装类为Double类
- boolean型对应的包装类为Boolean类
- char型的包装类为Character类
8种基本数据类型中除了int型和char型的包装类外,其余6种基本数据类型的包装类的名称都与其对应的基本数据类型名称相同,只需要首字母大写即可。
这些包装类中的构造方法,除了 char 型的包装类 Character 类只具有第一种形式外,其余7种都具有两种形式:
包装类 Character 的构造函数:
/**
* Constructs a newly allocated {@code Character} object that
* represents the specified {@code char} value.
*
* @param value the value to be represented by the
* {@code Character} object.
*/
public Character(char value) {
this.value = value;
}
包装类 Integer 的构造函数:
/**
* 带一个同类型或类型一致的参数。
* Constructs a newly allocated {@code Integer} object that
* represents the specified {@code int} value.
*
* @param value the value to be represented by the
* {@code Integer} object.
*/
public Integer(int value) {
this.value = value;
}
/**
* 带一个字符串类型的参数。
* 需要注意:字符串中的数据格式必须与所创建的包装类中的数据格式保持一致,否则将会引发异常 NumberFormatException
* Constructs a newly allocated {@code Integer} object that
* represents the {@code int} value indicated by the
* {@code String} parameter. The string is converted to an
* {@code int} value in exactly the manner used by the
* {@code parseInt} method for radix 10.
*
* @param s the {@code String} to be converted to an
* {@code Integer}.
* @exception NumberFormatException if the {@code String} does not
* contain a parsable integer.
* @see java.lang.Integer#parseInt(java.lang.String, int)
*/
public Integer(String s) throws NumberFormatException {
this.value = parseInt(s, 10);
}
包装类和基本数据类型之间的转换:
Integer num = new Integer("123");
int a = num.intValue(); //包装类型转换为基本数据类型
Integer num2 = Integer.valueOf(a); // 基本数据类型转换为包装类型
/*
* 包装类转基本数据类型:对象名.基本数据类型Value();
* 基本数据类型转包装类:包装类类名.valueOf();
*/
3. Character 中的一些特殊方法
Character类中特殊的方法:
public static boolean isDigit(char c)
public static boolean isLetter(char c)
public static boolean isLetterOrDigit(char c)
public static boolean isLowerCase(char c)
public static boolean isUpperCase(char c)
public static boolean isSpace(char c)
public static char toUpperCase(char c)
public static char toLowerCase(char c)
4. 基本类型与包装类型的异同
在Java中,一切皆对象,但八大基本类型却不是对象。
声明方式的不同,基本类型无需通过new关键字来创建,而封装类型需new关键字。
存储方式及位置不同,基本类型直接存储在栈中能高效的存取,封装类型需要通过引用指向实例,具体的实例保存在堆中。
初始值的不同,封装类型的初始值为null,基本类型的初始值视具体的类型而定,比如int类型的初始值为0, boolean类型为false
使用方式的不同,比如与集合类合作使用时只能使用包装类型