任务描述

本关任务:掌握 Integer 类的定义与方法的使用。

相关知识

Java 是个面向对象语言,所有的操作都是基于对象。Object 类是 Java 中的对象基础,所有 Java 中的类都有个共同的始祖 Object 类,Object 类可以表示任意类型数据。但 Java 中的一些基本类型数据,并不是对象,没有对象的操作。如何让对象类型与基础联系数据联系起来,这时就需要一个过渡类型数据,称为包装类。

包装类是对基本类型数据的包装,让基本数据类型“伪装”成类,具有类的特性,可以进行类的方法操作。

下表是基本数据类型与对应的包装类型。

基本数据类型

包装类型

byte

Byte

boolean

Boolean

short

Short

char

Character

int

Integer

long

Long

float

Float

double

Double

接下来我们将通过介绍包装类 Integer 来了解 Java 中的包装类。

Integer 类在对象中包装了一个基本类型 int 的值。Integer 类对象包含一个 int 类型的字段。此外,该类提供了多个方法,能在 int 类型和 String 类型之间互相转换,还提供了处理 int 类型时非常有用的其他一些常量和方法。

Integer 类中的构造方法有以下两个:

  • Integer(int value):构造一个新分配的 Integer 对象,它表示指定的 int 值;
  • Integer(String s):构造一个新分配的 Integer 对象,它表示 String 参数所指示的 int 值。

例如,以下代码分别使用以上两个构造方法来获取 Integer 对象:

1. Integer integer1 = new Integer(100); // 以 int 型变量作为参数创建 Integer 对象
2. Integer integer2 = new Integer("100"); // 以 String 型变量作为参数创建 Integer 对象

方法

返回值

功能

byteValue()

byte

以 byte 类型返回该 Integer 的值

shortValue()

short

以 short 类型返回该 Integer 的值

intValue()

int

以 int 类型返回该 Integer 的值

toString()

String

返回一个表示该 Integer 值的 String 对象

equals(Object obj)

boolean

比较此对象与指定对象是否相等

compareTo(Integer

anotherlnteger)

int

在数字上比较两个 Integer 对象,如相等,则返回 0;

如调用对象的数值小于 anotherlnteger 的数值,则返回负值;

如调用对象的数值大于 anotherlnteger 的数值,则返回正值

valueOf(String s)

Integer

返回保存指定的 String 值的 Integer 对象

parseInt(String s)

int

将数字字符串转换为 int 数值

toBinaryString(int i)

String

获取数字的二进制形式

toOctalString(int i)

String

获取数字的八进制形式

toHexString(int i)

String

获取数字的十六进制形式

下面为大家详细介绍这些方法的使用:

  • doubleValue():可以将 Integer 对象类型变成 double 的基础数据类型;
1. public class TestDemo {
2. public static void main(String[] args) {
3. // 定义一个 Integer 对象类型的变量
4. Integer a = new Integer(10);
5. // 将 a 类型转变为 double 的基础数据类型
6. double i = a.doubleValue();
7. System.out.print(i);
8. }
9. }


  1. 10.0
  • toString():返回一个表示该 Integer 值的 String 对象;
1. // 定义一个 Integer 类型的变量
2. Integer i1 = new Integer(3);
3. // 将 Integer 值转化为 String 类型
4. String s = i1.toString();
5. System.out.print(s);

执行结果:

  1. 3
  • valueOf(String s):返回保存指定的 String 值或数值型的 Integer 对象;
2. String a = "12";
3. // 将 String 型的数据转换为 Integer 对象
4. Integer ai = Integer.valueOf(a);
5. System.out.println(ai);

执行结果:

  1. 12
  • parseInt:将数字字符串转换为 int 数值。
2. public class TestDemo {
3. public static void main(String[] args) {
4. String a = "12";
5. int v = Integer.parseInt(a);
6. System.out.print(v);
7. }
8. }

执行结果:

  1. 12

上面的例子都需要手动实例化一个包装类,称为手动拆箱装箱。Java 1.5(5.0) 之前必须手动拆箱装箱。

Java 1.5 之后可以自动拆箱装箱,也就是在进行基本数据类型和对应的包装类转换时,系统将自动进行,这将大大方便程序员的代码书写。

我们来看一下我们之前用的手动装箱的方法:

1. int i = 10;
2. Integer obj = new Integer(i); // 手动装箱

系统提供的自动装箱方法:

1. Integet i = 10; // 自动装箱

其实自动装箱的原理就是调用包装类的 valueOf 方法。

1. Integer i = Integer.valueOf(10);

与自动装箱相反,有装就有拆,自动拆箱即自动将包装类型转换成基本数据类型。

1. Integet i = 10; // 自动装箱
2. 3. int i1 = i; // 自动拆箱

把 i 赋值给 i1 就是实现的自动拆箱功能,自动装箱的原理就是调用包装类的 xxValue 方法。

1. Integet i = 10; // 自动装箱
2. int i1 = i.intValue();

Integer 类包含以下 4 个常量:

  • MAX_VALUE:值为 231-1 的常量,它表示 int 类型能够表示的最大值;
  • MIN_VALUE:值为 -231 的常量,它表示 int 类型能够表示的最小值;
  • SIZE:用来以二进制补码形式表示 int 值的比特位数;
  • TYPE:表示基本类型 int 的 Class 实例。

下面的代码演示了 Integer 类中常量的使用。

1. int max_value = Integer.MAX_VALUE; // 获取 int 类型可取的最大值
2. int min_value = Integer.MIN_VALUE; // 获取 int 类型可取的最小值
3. int size = Integer.SIZE; // 获取 int 类型的二进制位
4. Class c = Integer.TYPE; // 获取基本类型 int 的 Class 实例
/*
 * 根据所学的 Integer 类的相关知识,完成本关任务。
 */
public class Test {
    public static void main(String[] args) {
        // 请在下面的Begin-End之间按照注释中给出的提示编写正确的代码
        /********** Begin **********/
// 创建一个 Integer 对象,它表示指定的 int 值,值为 “123”,变量名命名为 i1
        int a = 123;
        Integer i1 = new Integer(a);
        // 创建一个 Integer 对象,它表示 String 参数所指示的 int 值,值为 “123”,变量名命名为 i2
        String str = "123";
        Integer i2 = new Integer(str);
        // 依次使用 == 和 equals 方法比较 i1 和 i2 是否相同
        boolean b1 = (i1 == i2);
        boolean b2 = i1.equals(i2);
        System.out.println("i1==i2的结果为" + b1);
        System.out.println("i1.equals(i2)的结果为" + b2);
        // 使用自动装箱的方法创建一个 Integer 对象,值为 “128”,变量名命名为 i3
        Integer i3 = 128;
        // 使用 compareTo 方法 依次比较 i3 和 i1、i2的大小以及 ii 和 i2 的大小
        int b3 = i3.compareTo(i1);
        int b4 = i3.compareTo(i2);
        int b5 = i1.compareTo(i2);
        System.out.println("i3和i1比较后的结果为" + b3);
        System.out.println("i3和i2比较后的结果为" + b4);
        System.out.println("i1和i2比较后的结果为" + b5);
        // 将 i2 转换为 int 类型,i1 转换为 String 类型
        int b = i2.intValue();
        String c = i1.toString();
        System.out.println("Integer->int结果为" + b);
        System.out.println("Integer->String结果为" + c);
        /********** End **********/
    }
}