在 Java 中,Integer 是一个包装类,用于表示 int 类型的值,由于 Integer 是对象,因此可以判空;而 int 是基本数据类型,不能判空(直接使用 == null 会编译错误)。

Integer 判空的方法
(1) 直接判空(适用于可能为 null 的情况)
Integer num = null;
if (num == null) {
System.out.println("num is null");
}
(2) 使用 Objects.isNull() 或 Objects.nonNull()(Java 7+)
import java.util.Objects;
Integer num = null;
if (Objects.isNull(num)) {
System.out.println("num is null");
}
if (Objects.nonNull(num)) {
System.out.println("num is not null");
}
(3) 使用 Optional(Java 8+,推荐用于避免 NullPointerException)
import java.util.Optional;
Integer num = null;
Optional<Integer> optionalNum = Optional.ofNullable(num);
if (optionalNum.isPresent()) {
System.out.println("num is not null: " + optionalNum.get());
} else {
System.out.println("num is null");
}
int 基本类型不能判空
如果直接使用 int,编译器会报错:
int num = null; // 编译错误:incompatible types: <null> cannot be converted to int
常见场景:从数据库或 JSON 获取 Integer 时判空
从数据库查询可能返回 null,此时需要判空:
Integer id = queryFromDatabase(); // 可能返回 null
if (id != null) {
System.out.println("ID: " + id);
} else {
System.out.println("ID is null");
}
注意事项
Integer的缓存范围:Integer会缓存-128到127的值,Integer.valueOf(127) == Integer.valueOf(127)返回true,但超出范围则不一定相等。- 自动拆箱(Unboxing)时的
NullPointerException:Integer num = null; int primitiveNum = num; // 抛出 NullPointerException
| 类型 | 判空方式 | 示例 |
|---|---|---|
Integer |
== null / Objects.isNull() |
if (num == null) |
Integer |
Optional.ofNullable() |
Optional.ofNullable(num) |
int |
不能判空(直接使用即可) | int num = 0; |
根据场景选择合适的方式,避免 NullPointerException。

