int
和 Integer
是 Java 中用于表示整数的两种不同类型,它们的区别主要体现在以下几个方面:
1. 类型定义
int
:- 是 Java 中的一种基本数据类型(Primitive Data Type)。
- 直接存储整数值,不涉及对象。
Integer
:- 是
int
的包装类(Wrapper Class),属于引用类型。 - 是一个对象,封装了一个
int
类型的值,并提供了许多实用的方法。
- 是
2. 内存分配
int
:- 存储在栈内存中,占用固定的内存空间(通常为 4 字节)。
- 性能更高,因为没有对象开销。
Integer
:- 存储在堆内存中,作为一个对象,除了存储整数值外,还需要额外的内存来存储对象头等信息。
- 性能相对较低,因为涉及对象的创建和垃圾回收。
3. 默认值
int
:- 默认值为
0
。
- 默认值为
Integer
:- 默认值为
null
,因为它是一个对象。
- 默认值为
4. 使用场景
int
:- 适用于对性能要求较高的场景,如循环、计算等。
- 不能用于泛型或集合类(如
List<int>
是不允许的)。
Integer
:- 适用于需要对象操作的场景,如集合类(
List<Integer>
)、泛型等。 - 提供了许多实用方法,如
parseInt()
、toString()
等。
- 适用于需要对象操作的场景,如集合类(
5. 自动装箱与拆箱
- Java 5 引入了**自动装箱(Autoboxing)和自动拆箱(Unboxing)**机制,使得
int
和Integer
可以互相转换。- 自动装箱:将
int
自动转换为Integer
。 - 自动拆箱:将
Integer
自动转换为int
。
- 自动装箱:将
6. 示例代码
public class Main {
public static void main(String[] args) {
// int 示例
int a = 5;
int b = 10;
int sum = a + b; // 直接计算
System.out.println("Sum (int): " + sum);
// Integer 示例
Integer x = 15; // 自动装箱
Integer y = 20; // 自动装箱
Integer total = x + y; // 自动拆箱后计算,再自动装箱
System.out.println("Total (Integer): " + total);
// 使用 Integer 的方法
String str = "123";
int parsedInt = Integer.parseInt(str); // 将字符串转换为 int
System.out.println("Parsed Int: " + parsedInt);
}
}
7. 总结
特性 | int | Integer |
---|---|---|
类型 | 基本数据类型 | 包装类(引用类型) |
内存分配 | 栈内存 | 堆内存 |
默认值 | 0 | null |
性能 | 更高 | 较低 |
使用场景 | 高性能计算、循环等 | 集合类、泛型、需要对象的场景 |
自动装箱/拆箱 | 支持 | 支持 |
int
是基本数据类型,性能更高,适合简单计算。Integer
是包装类,提供了更多功能,适合需要对象的场景。
THE END
暂无评论内容