Java语言是一个面向对象的语言,但是Java中的基本数据类型却是不面向对象的。基本类型的数据不具备“对象”的特性(没有成员变量和成员方法可以调用),因此,java为每种数据类型分别设计了对应的类,即包装类。本文主要介绍Java 包装类。

1、Java 包装类

Java有8种基本数据类型:整型(byte、short、int、long)、浮点型(float、double)、布尔型boolean、字符型char,相对应地,Java提供了8种包装类Byte、Short、Integer、Long、Float、Double、Boolean、Character。包装类创建对象的方式就跟其他类一样。包装类提供了一种使用原始数据类型作为对象的方法。

下表是原始类型和对应的包装类:

原始数据类型

包装类

byte

Byte

short

Short

int

Integer

long

Long

float

Float

double

Double

boolean

Boolean

char

Character

有时必须使用包装类,例如,在使用Collection对象时,例如,作为ArrayList,其中不能使用基本类型(列表只能存储对象):

例如:

ArrayList<int> myNumbers = new ArrayList<int>(); // 报错
ArrayList<Integer> myNumbers = new ArrayList<Integer>(); // 正常创建方法

2、创建包装类对象

要创建包装类对象,需要使用包装类而不是原始类型。要获取值,可以只打印输出对象:

例如:

public class Main {
  public static void main(String[] args) {
    Integer myInt = 8;
    Double myDouble = 8.99;
    Character myChar = 'A';
    System.out.println(myInt);
    System.out.println(myDouble);
    System.out.println(myChar);
  }
}

由于使用的是包装类对象,因此可以使用某些方法来获取有关特定对象的信息。

例如,以下方法用于获取与 相应的包装对象:intValue()byteValue()shortValue()longValue()floatValue()doubleValue()charValue()booleanValue()

下面示例将输出与以上示例相同的结果:

例如:

public class Main {
  public static void main(String[] args) {
    Integer myInt = 2;
    Double myDouble = 9.99;
    Character myChar = 'A';
    System.out.println(myInt.intValue());
    System.out.println(myDouble.doubleValue());
    System.out.println(myChar.charValue());
  }
}

另一个有用的方法是toString()方法,该方法用于将包装器对象转换为字符串。

在下面的示例中,我们将Integer转换为String,并使用String对象的length()方法输出字符串的长度:

例如:

public class Main {
  public static void main(String[] args) {
    Integer myInt = 100;
    String myString = myInt.toString();
    System.out.println(myString.length());
  }
}

3、装箱和拆箱

基本数据类型转换为包装类的过程称为装箱,例如把 int 包装成 Integer 类的对象;包装类变为基本数据类型的过程称为拆箱,例如把 Integer 类的对象重新简化为 int。

例如,

public class Main {
    public static void main(String[] args) {
        int m = 100;
        Integer obj = m;  // 自动装箱
        int n = obj;  // 自动拆箱
        System.out.println("n = " + n);
      
        Integer obj1 = 100;
        System.out.println("obj等价于obj1返回结果为" + obj.equals(obj1));
    }
}

推荐文档