📜  java中的原始与包装类(1)

📅  最后修改于: 2023-12-03 14:42:56.159000             🧑  作者: Mango

Java中的原始与包装类

在Java中,我们有原始类型和包装类。原始类型是指Java中的基本数据类型,如int、boolean、float、double等。包装类则是原始类型的封装版本,它们的名字与原始类型相同,但首字母大写。例如,Integer是int的包装类,Boolean是boolean的包装类。

原始类型

Java中一共有8种原始类型,它们分别是:

  • byte: 8位有符号整数
  • short:16位有符号整数
  • int:32位有符号整数
  • long:64位有符号整数
  • float:32位单精度浮点数
  • double:64位双精度浮点数
  • char: 16位Unicode字符
  • boolean: true或false
包装类

Java中的包装类实现了将原始类型的值封装为一个对象。每个原始类型都有对应的包装类,如下表所示:

| 原始类型 | 包装类 | | :--- | :--- | | byte | Byte | | short | Short | | int | Integer | | long | Long | | float | Float | | double | Double | | char | Character | | boolean | Boolean |

使用包装类可以将原始类型转换为对象,这在Java编程中很有用。例如,在集合框架中,只能保存对象,而不能直接存储原始类型的值。因此,我们可以使用Integer、Double等包装类来实现这种转换。

// 使用包装类
Integer i = new Integer(10);
Double d = new Double(3.14);

// 将原始类型转换为包装类
Integer a = Integer.valueOf(5);
Double b = Double.valueOf(3.14);

除了将原始类型转换为对应的包装类,我们还可以将字符串转换为对应的包装类。这在处理用户输入数据时非常有用。

// 将字符串转换为包装类
Integer c = Integer.valueOf("10");
Double e = Double.valueOf("3.14");
自动装箱与拆箱

自动装箱和拆箱是Java语言中的一种语法糖,它可以使得原始类型和包装类之间进行自动转换。具体来说,当程序需要使用包装类对象时,Java编译器会自动将原始类型转换为包装类对象,这个过程称为自动装箱。当程序需要使用原始类型时,Java编译器会自动将包装类对象转换为原始类型,这个过程称为自动拆箱。

// 自动装箱
Integer f = 10;

// 自动拆箱
int g = new Integer(10);
原始类型与包装类的比较

在Java中,原始类型和包装类之间可以进行比较。这个过程中,编译器会自动将包装类对象拆箱为原始类型进行比较。例如:

// 比较原始类型
int x = 5;
int y = 10;
if (x < y) {
    // do something
}

// 比较包装类
Integer h = 5;
Integer k = 10;
if (h < k) {
    // do something
}

需要注意的是,对于两个包装类之间的比较,只有当它们指向同一个对象时才能使用==运算符进行比较。如果使用equals方法进行比较,则比较的是包装类对象的值。

// 比较包装类
Integer m = new Integer(5);
Integer n = new Integer(5);
if (m == n) { // false,因为它们指向不同的对象
    // do something
}
if (m.equals(n)) { // true,因为它们的值相同
    // do something
}
总结

Java中的原始类型和包装类是Java编程中很重要的概念。原始类型是Java中的基本数据类型,包装类则是原始类型的封装版本。使用包装类可以将原始类型转换为对象,这在Java编程中很有用。自动装箱和拆箱可以使得原始类型和包装类之间进行自动转换,这是Java语言中的一种语法糖。在进行原始类型和包装类之间的比较时需要注意一些细节。