Java 整数类型常量声明 - 原语还是对象?

Gon*_*ndy 5 java

在 Java 中,通过对象方式声明的 int 常量有什么好处:

public final static Integer SOME_CONSTANT = Integer.valueOf(99);
Run Code Online (Sandbox Code Playgroud)

而不是经典

public final static int SOME_CONSTANT = 99;
Run Code Online (Sandbox Code Playgroud)

我知道对象和原语之间的基本区别,还有自动装箱。但是我在我们公司的代码中看到了这个声明,我想知道将整数常量声明为对象有什么特别的原因吗?

Aar*_*lla 4

这取决于您计划如何使用该常量。如果您有一个需要 的 API Integer,那么int由于自动装箱,使用该表单会产生较小的性能损失。

如果您只需要原语,拆箱Integer并不是很昂贵,但很容易避免。

另请注意

Integer SOME_CONSTANT = Integer.valueOf(99);
Run Code Online (Sandbox Code Playgroud)

完全一样

Integer SOME_CONSTANT = 99;
Run Code Online (Sandbox Code Playgroud)

这些*.valueOf()方法被添加到 API 中,为编译器提供了一种自动装箱原语的通用方法。