📅  最后修改于: 2023-12-03 14:42:56.159000             🧑  作者: Mango
在Java中,我们有原始类型和包装类。原始类型是指Java中的基本数据类型,如int、boolean、float、double等。包装类则是原始类型的封装版本,它们的名字与原始类型相同,但首字母大写。例如,Integer是int的包装类,Boolean是boolean的包装类。
Java中一共有8种原始类型,它们分别是:
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语言中的一种语法糖。在进行原始类型和包装类之间的比较时需要注意一些细节。