基本类型和包装类型的区别
在 Java 中,基本类型(Primitive Types)不是对象。Java 中的基本类型和对象类型有明显的区别,以下是详细的解释:
一、基本类型(Primitive Types)
Java 提供了 8 种基本类型,它们是预定义的数据类型,用于存储简单的数据值。基本类型不是对象,它们直接存储数据值,而不是引用对象。以下是 Java 中的基本类型:
一、整数类型
| 类型 | 大小(字节) | 范围 | 默认值 |
|---|---|---|---|
byte |
1 | -128 到 127 | 0 |
short |
2 | -32768 到 32767 | 0 |
int |
4 | -2147483648 到 2147483647 | 0 |
long |
8 | -9223372036854775808 到 9223372036854775807 | 0L |
float |
4 | 单精度浮点数 | 0.0f |
double |
8 | 双精度浮点数 | 0.0d |
char |
2 | Unicode 字符集,范围为 \u0000 到 \uffff |
\u0000 |
boolean |
1(实际占用 1 字节) | true 或 false |
false |
二、对象类型(Reference Types)
对象类型是基于类或接口的类型,它们存储的是对象的引用,而不是实际的数据值。对象类型包括:
-
类(Class)
-
接口(Interface)
-
数组(Array)
对象类型的所有实例都是通过new关键字创建的,它们存储在堆内存中,通过引用访问。
三、基本类型与对象类型的比较
3.1 存储方式
-
基本类型:直接存储数据值,存储在栈内存中。
-
对象类型:存储对象的引用,实际对象存储在堆内存中。
3.2 默认值
-
基本类型:有默认值,如
int的默认值是0,boolean的默认值是false。 -
对象类型:默认值是
null,表示没有引用任何对象。
3.3 类型转换
-
基本类型:支持自动类型转换(从小范围类型到大范围类型)和显式类型转换(从大范围类型到小范围类型)。
-
对象类型:需要通过显式转换(强制类型转换)来改变引用的类型。
3.4 包装类
Java 为每种基本类型提供了对应的包装类,用于将基本类型封装为对象。包装类是对象类型,它们提供了更多的方法和功能。
3.4 包装类
Java 为每种基本类型提供了对应的包装类,用于将基本类型封装为对象。包装类是对象类型,它们提供了更多的方法和功能。
| 基本类型 | 包装类 |
|---|---|
byte |
Byte |
short |
Short |
int |
Integer |
long |
Long |
float |
Float |
double |
Double |
char |
Character |
boolean |
Boolean |
四、示例代码
4.1 基本类型
java
int number = 10; // 基本类型 int
4.2 对象类型
java
Integer number = new Integer(10); // 对象类型 Integer
五、总结
-
基本类型:不是对象,直接存储数据值,存储在栈内存中,有默认值,支持自动和显式类型转换。
-
对象类型:是对象,存储对象的引用,存储在堆内存中,默认值是
null,需要显式转换。