在 Java 中,Integer
和 int
有以下主要区别:
总结
-
类型:
int
:是一种基本数据类型(primitive type),用于表示整数值。Integer
:是一个类(wrapper class),位于java.lang
包中,用于包装int
类型的值。
-
内存分配:
int
:存储在栈内存中,占用固定的内存空间(通常为 4 个字节)。Integer
:存储在堆内存中,包含一个int
类型的值和一些额外的对象开销。
-
默认值:
int
:默认值为0
。Integer
:默认值为null
(如果声明为对象引用变量)。
-
方法和属性:
int
:没有方法和属性,因为它是一个基本数据类型。Integer
:提供了许多有用的方法,如intValue()
、toString()
、valueOf()
等,可以进行各种操作。
-
自动装箱和拆箱:
自动装箱:将int
转换为Integer
。int a = 10; Integer b = a; // 自动装箱
自动拆箱:将
Integer
转换为int
。Integer c = 20; int d = c; // 自动拆箱
-
性能:
int
:性能更高,因为它是基本数据类型,不需要额外的对象开销。Integer
:性能较低,因为它是对象,涉及对象的创建和垃圾回收。
- 示例代码
public class Example { public static void main(String[] args) { // 基本数据类型 int int a = 10; System.out.println("a: " + a); // 输出: a: 10 // wrapper 类 Integer Integer b = 20; System.out.println("b: " + b); // 输出: b: 20 // 自动装箱 Integer c = a; System.out.println("c: " + c); // 输出: c: 10 // 自动拆箱 int d = b; System.out.println("d: " + d); // 输出: d: 20 // 使用 Integer 的方法 String str = b.toString(); System.out.println("str: " + str); // 输出: str: 20 } }
代码解释
-
基本数据类型
int
:int a = 10;
:声明并初始化一个int
变量a
。System.out.println("a: " + a);
:输出a
的值。
-
wrapper 类
Integer
:Integer b = 20;
:声明并初始化一个Integer
对象b
。System.out.println("b: " + b);
:输出b
的值。
int
:基本数据类型,性能高,没有方法和属性。Integer
:包装类,提供丰富的操作方法,但性能较低。-
自动装箱:
Integer c = a;
:将int
类型的a
自动转换为Integer
类型的c
。
-
自动拆箱:
int d = b;
:将Integer
类型的b
自动转换为int
类型的d
。
-
使用
Integer
的方法:String str = b.toString();
:将Integer
对象b
转换为字符串。
-