Integer和int的基础区别

📅 2026/8/14 13:02:40
Integer和int的基础区别
一、基础定义intJava 8 种基本数据类型原始类型 primitive type 之一占用内存4 字节32 位取值范围-2³¹ ~ 2³¹-1 → -2147483648 ~ 2147483647Integer引用类型包装类java.lang.Integer是 int 的对象封装内部持有 private final int value;对象存在堆内存占用更大内存补Java 八种基本类型与对应包装类byte→Byte、short→Short、int→Integer、long→Longfloat→Float、double→Double、char→Character、boolean→Boolean二、核心区别默认值不同// 作为类成员变量classTest{inta;Integerb;}int a 默认值0Integer b 默认值null2. 能否为 nullint绝对不能赋值 null编译报错Integer可以是 null做接口数据传输的时候要注意如果前端不传字段 → 框架赋值 null用 int 直接抛出类型转换异常。3. 内存存放位置int局部变量 → 栈内存对象成员变量跟着对象在堆但数值是原始值。没有对象头只存纯粹数值开销极小。Integer是对象实例存放在堆内存包含对象头、成员 value内存开销远大于 int。4. 判断规则高频坑重点① int 和 int 比较直接比较数值inta100;intb100;System.out.println(ab);// true② Integer 和 Integer 使用 这里涉及 Integer 缓存池IntegerCacheInteger 默认缓存 -128 ~ 127 之间的对象。Integeri1100;Integeri2100;System.out.println(i1i2);// true 命中缓存Integeri3200;Integeri4200;System.out.println(i3i4);// false 超出缓存新建两个对象所以Integer 对象比较数值永远使用 .equals()。③ int 和 Integer 混合 Integer 会自动拆箱成 int只比较数值但是如果Integer是null则自动拆箱会空指针Integeranull;intb10;if(ab){}// NullPointerException// 执行逻辑a.intValue() 拆箱null调用方法空指针自动装箱 自动拆箱JDK1.5 特性装箱int → IntegerInteger num 10; 等价于 Integer num Integer.valueOf(10);拆箱Integer → intint n num; 等价于 int n num.intValue();所有拆箱操作如果 Integer 为 null → 空指针异常补不推荐混搭