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

Java Integer包装类的用法(附带实例)

Java 是一种面向对象的语言,Java 中的类把方法与数据连接在一起,构成了自包含式的处理单元。但是 Java 中的基本数据类型却不是面向对象的,这在实际使用时存在很多不便之处。

为了弥补这个不足,Java 为每个基本类型都提供了相应的包装类,可以把这些基本类型转换为对象来处理。

Java 语言提供八种基本数据类型,其中包含六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一个布尔类型。这八种基本类型对应的包装类都位于 java.lang 包中,包装类和基本数据类型的对应关系如下表所示。

表:基本数据类型和包装类的对应关系
基本数据类型 包装类 基本数据类型 包装类
byte Byte char Character
short Short float Float
int Integer double Double
long Long boolean Boolean

从表中可以看出,除了 int 和 char 之外,其他基本数据类型的包装类都是将其首字母变为大写。

包装类的用途主要包含两种:
基本数据类型和对应的包装类可以相互转换,具体转换规则如下:
由于包装类的用法非常相似,本节以 Integer 包装类为例介绍包装类的使用方法。

Java Integer类

Integer 有两个构造方法:
① 以 int 类型变量作为参数创建 Integer 对象。例如:
Integer number = new Integer(7);

② 以 String 型变量作为参数创建 Integer 对象。例如:
Integer number = new Integer(“7”);

1) int和Integer类之间的转换

通过 Integer 类的构造方法将 int 装箱,通过 Integer 类的 intValue() 方法将 Integer 拆箱。

【实例 1】创建类,实现 int 和 Integer 之间的转换,并通过屏幕输出结果:
public class IntTranslator {
    public static void main(String[] args) {
        int number1 = 100;
        Integer obj1 = new Integer(number1);
        int number2 = obj1.intValue();
        System.out.println("number2=" + number2);
        Integer obj2 = new Integer(100);
        System.out.println("obj1 等价于 obj2? " + obj1.equals(obj2));
    }
}
程序执行结果为:

number2=100
obj1 等价于 obj2? true

2) 整数和字符串之间的转换

Java 提供了便捷的方法可以在数字和字符串间进行轻松转换。

Integer 类中的 parseInt() 方法可以将字符串转换为 int 数值,该方法的原型如下:
public static int parseInt(String s)
其中,s 代表要转换的字符串,如果字符串中有非数字字符,则程序执行将出现异常。

另一个将字符串转换为 int 数值的方法,其原型如下:
public static parseInt(String s,int radix)
其中,radix 参数代表指定的进制(如二进制、八进制等),默认为十进制。

另外,Integer 类中有一个静态的 toString() 方法,可以将整数转换为字符串,原型如下:
public static String toString(int i)

【实例】创建类,实现整数和字符串之间的相互转换,并输出结果。
public class IntStringTrans {
    public static void main(String[] args) {
        String s1 = "123";
        int n1 = Integer.parseInt(s1);
        System.out.println("字符串 \"" + s1 + "\" 按十进制可以转换为 " + n1);
        int n2 = Integer.parseInt(s1, 16);
        System.out.println("字符串 \"" + s1 + "\" 按十六进制可以转换为 " + n2);
        String s2 = Integer.toString(n1);
        System.out.println("整数 123 可以转换为字符串 \"" + s2 + "\"");
    }
}
程序执行结果为:

字符串 "123" 按十进制可以转换为 123
字符串 "123" 按十六进制可以转换为 291
整数 123 可以转换为字符串 "123"

上面两个例子中都需要手动实例化一个包装类,这称之为手动拆箱装箱。

为了方便使用和性能优化,JDK 5.0 之后可以实现自动拆箱装箱,即在进行基本数据类型和对应包装类的转换时自动进行,这大大方便程序员的代码编写。

【实例】创建类,在 int 和 Integer 间进行自动转换。
public class AutoTrans {
    public static void main(String[] args) {
        int m = 500;
        Integer obj = m; // 自动装箱
        int n = obj; // 自动拆箱
        System.out.println("n = " + n);
        Integer obj1 = 500;
        System.out.println("obj 等价于 obj1? " + obj.equals(obj1));
    }
}
程序执行结果为:

n = 500
obj 等价于 obj1? true

相关文章