Java包装类用法详解(附带实例)
Java 中的八大基本数据类型不能直接视为对象操作,无法赋值为 null,也不能用在泛型中,如果字符串想转换成数字也无法直接通过强转达到。也就是说,基本数据类型简化了开发,但是也给实际开始带来了诸多干扰。
为了解决这些不足,Java 提供了包装类,主要作用是将基本数据类型封装在包装类中。
包装类就是基本数据类型和对象之间的一个桥梁,可以进行相互转换。将基本数据类型转换为对象的过程即是装箱,将对象转换为基本数据类型的过程即是拆箱。
从 JDK 1.5 起,提供了自动拆装箱,即基本数据类型和其封装类可以自动转换。Java 中基本数据类型的包装类如下表所示:
Integer 对象的获取有多种方式,具体如下表所示:
上表所示的 Integer 对象的获取方法的具体实例如下:
下表列出了 Integer 类的常用方法:
接下来,通过案例来演示 Integer 类常用方法的使用:
除了上表列出的常用方法以外,Integer 类还提供了以下几个常量:
其他数值型的相关封装类与 Integer 类似,在此不再一一说明。
Boolean 对象的获取有多种方式,具体如下表所示。
上表所示的 Boolean 对象的获取方法的具体实例如下:
下表列出了 Boolean 类的常用方法:
接下来,通过案例来演示 Boolean 类常用方法的使用:
Character 对象的获取有多种方式,具体如下表所示:
上表所示的 Character 对象的获取方法的具体实例如下:
下表列出了 Character 类的常用方法:
接下来,通过案例来演示 Character 类常用方法的使用:
为了解决这些不足,Java 提供了包装类,主要作用是将基本数据类型封装在包装类中。
包装类就是基本数据类型和对象之间的一个桥梁,可以进行相互转换。将基本数据类型转换为对象的过程即是装箱,将对象转换为基本数据类型的过程即是拆箱。
从 JDK 1.5 起,提供了自动拆装箱,即基本数据类型和其封装类可以自动转换。Java 中基本数据类型的包装类如下表所示:
基本数据类型 | 包装类 | 基本数据类型 | 包装类 |
---|---|---|---|
byte | Byte | Float | Float |
short | Short | Double | Double |
int | Integer | Char | Character |
long | Long | Boolean | Boolean |
Java数值型包装类
8 种基本数据类型中有 4 个整型,它们的包装类分别为 Byte 类、Short 类、Integer 类、Long 类;两个浮点型,包装类分别为 Double 类、Float 类。这些类都是 Number 类的子类,包含的方法和使用方式都基本一致,因此在此只介绍 Integer 类,其他数值类型的包装类大家可以参考学习。Integer 对象的获取有多种方式,具体如下表所示:
方法 | 方法描述 |
---|---|
new Integer(int value) | 构造方法,以 int 型为参数创建一个 Integer 对象 |
new Integer(String s) | 构造方法,以 String 字符串为参数创建一个 Integer 对象,这个字符串必须包含的是数字,否则会出现 NumberFormatException 异常 |
static Integer valueOf(String s) | 把该 String 字符串转化成 Integer 对象,如果 String 中存储的不是数字会出现异常 |
Static Integer valueOf(int i) | 把int类型包装成一个 Integer 对象 |
static Integer getInteger(String nm) | 根据指定的名称得到系统属性的整数值。参数将被认为是系统属性的名称,没有将返回 null |
直接赋值数字的常量值 | 使用自动装箱进行对象获取 |
上表所示的 Integer 对象的获取方法的具体实例如下:
Integer int1 = new Integer(11111); Integer int2 = new Integer("11111"); // 不推荐 Integer int3 = 11111; Integer int4 = Integer.valueOf(11111); Integer int5 = Integer.valueOf("11111");
下表列出了 Integer 类的常用方法:
方法 | 方法描述 |
---|---|
static int parseInt(String s) | 将字符串转换成 int 类型 |
static String toBinaryString(int i) | 将数字转换成二进制进行显示 |
static String toHexString(int i) | 将数字转换成十六进制进行显示 |
static String toOctalString(int i) | 将数字转换成八进制进行显示 |
boolean equals(Object obj) | 比较对象中存储的内容是否相等 |
int intValue() | 以 int 型返回该对象的值 |
byte byteValue() | 以 byte 型返回该对象的值 |
short shortValue() | 以 short 型返回该对象的值 |
接下来,通过案例来演示 Integer 类常用方法的使用:
public class Demo { public static void main(String[] args) { int i = Integer.parseInt("123"); String two = Integer.toBinaryString(1111); System.out.println("二进制:" + two); String six = Integer.toHexString(1111); System.out.println("十六进制:" + six); String eight = Integer.toOctalString(1111); System.out.println("八进制:" + eight); Integer inte = new Integer(111); Integer int1 = new Integer(111); System.out.println("inte==int1:" + (inte == int1)); System.out.println("inte.equals(int1):" + inte.equals(int1)); } }程序的运行结果如下:
二进制:1101111 十六进制:6F 八进制:157 inte==int1:false inte.equals(int1):true程序中使用 Integer 声明的整数是引用数据类型;使用“==”比对的是地址,由于使用 new 关键字的形式创建对象每次都会开辟新的空间,因此比对结果返回的是 false;而 equals() 方法对比的是存储内容,因此比对结果返回的是 true。
除了上表列出的常用方法以外,Integer 类还提供了以下几个常量:
- MAX_VALUE:表示int类型可取最大值,为 2 的 31 次方减 1。
- MIN_VALUE:表示int类型可取的最小值,为 -2 的 31 次方。
- SIZE:表示用来以二进制补码形式表示 int 值的位数。
其他数值型的相关封装类与 Integer 类似,在此不再一一说明。
Java Boolean类
Boolean 类是 boolean 类型的包装类,提供了将 boolean 类型包装成一个对象的方法、String 类型和 boolean 类型转换的方法,以及一些其他常用方法和常量。Boolean 对象的获取有多种方式,具体如下表所示。
方法 | 方法描述 |
---|---|
new Boolean(Boolean value) | 构造方法,以 boolean 型为参数创建一个 Boolean 对象 |
new Boolean(String s) | 构造方法,以 String 字符串为参数创建一个 Boolean 对象,这个字符串必须是双引号包括的 true 才是 true,否则都是 false |
static Boolean valueOf(String s) | 把该 String 字符串转换成 Boolean 对象 |
static Boolean valueOf(boolean b) | 把 boolean 类型包装成一个 Boolean 对象 |
直接赋值boolean类型的常量值 | 使用自动装箱进行对象获取 |
上表所示的 Boolean 对象的获取方法的具体实例如下:
Boolean b1 = new Boolean(true); Boolean b2 = new Boolean("true"); Boolean b3 = Boolean.valueOf("true"); Boolean b4 = true;
下表列出了 Boolean 类的常用方法:
方法 | 方法描述 |
---|---|
static boolean parseBoolean(String s) | 将字符串转换成 boolean 类型,这个字符串必须是双引号包括的 true 才是 true,否则都是 false |
boolean equals(Object obj) | 比较对象中存储的内容是否相等 |
boolean booleanValue() | 以 boolean 类型返回该对象的值 |
接下来,通过案例来演示 Boolean 类常用方法的使用:
public class Demo { public static void main(String[] args) { // 将字符串转换成boolean类型,必须"true"才是true,否则都是false boolean b3 = Boolean.parseBoolean("true"); Boolean b1 = new Boolean(true); Boolean b2 = new Boolean("true"); System.out.println("b1.booleanValue():" + b1.booleanValue()); System.out.println("b1==b2:" + (b1 == b2)); System.out.println("b1.equals(b2):" + b1.equals(b2)); } }程序的运行结果如下:
b1.booleanValue():true
b1==b2:false
b1.equals(b2):true
Java Character类
Character 类是 char 类型的包装类,该类提供了很多方法可以实现字符和数字转换、字符大小写之间的转换。Character 对象的获取有多种方式,具体如下表所示:
方法 | 方法描述 |
---|---|
new Character(char value) | 构造方法,以 char 型为参数创建一个 Character 对象 |
static Character valueOf(char c) | 把 char 值转换成 Character 对象 |
直接赋值 char 类型的常量值 | 使用自动装箱进行对象获取 |
上表所示的 Character 对象的获取方法的具体实例如下:
Character char1 = new Character('c'); Character char2 = 'C'; Character char3 = Character.valueOf('c');
下表列出了 Character 类的常用方法:
方法 | 方法描述 |
---|---|
boolean equals(Object obj) | 比较对象中存储的内容是否相等 |
static boolean isLetter(char c) | 用于判断指定字符是否为字母 |
static boolean isDigit(char c) | 用于判断指定字符是否为数字 |
static boolean isUpperCase(char c) | 用于判断指定字符是否为大写字母 |
static boolean isLowerCase(char c) | 用于判断指定字符是否为小写字母 |
static char toUpperCase(char c) | 用于将小写字符转换为大写 |
static char toLowerCase(char c) | 用于将大写字符转换为小写 |
接下来,通过案例来演示 Character 类常用方法的使用:
public class Demo { public static void main(String[] args) { System.out.println("isUpperCase('c'):" + Character.isUpperCase('c')); System.out.println("isLowerCase('c'):" + Character.isLowerCase('c')); System.out.println("isLetter('c'):" + Character.isLetter('c')); System.out.println("isDigit('c'):" + Character.isDigit('c')); System.out.println("toUpperCase('c'):" + Character.toUpperCase('c')); } }程序的运行结果如下:
isUpperCase('c'):false isLowerCase('c'):true isLetter('c'):true isDigit('c'):false toUpperCase('c'):C