首页 > 编程笔记 > Java笔记 阅读:12

Java包装类用法详解(附带实例)

Java 中的八大基本数据类型不能直接视为对象操作,无法赋值为 null,也不能用在泛型中,如果字符串想转换成数字也无法直接通过强转达到。也就是说,基本数据类型简化了开发,但是也给实际开始带来了诸多干扰。

为了解决这些不足,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 类还提供了以下几个常量:
其他数值型的相关封装类与 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

相关文章