整数v/s int

Sid*_*tha 3 java primitive wrapper

在oracle docs java.lang页面上阅读:

通常,有必要将原始类型的值表示为对象.该包装类Boolean,Character,Integer,Long,Float,和Double服务于这个目的.

我不确定我理解为什么需要这些.它说他们有有用的功能,如equals().但是,如果我能做到(a==b),为什么我要将它们声明为Integer,使用更多内存并使用equals()?2的内存使用情况有何不同?

che*_*ken 10

Java的泛型系统仅支持类类型.由于原语不是类,因此它们不能与泛型一起使用.但是,基元的包装类可以用作泛型类型.例如,您可能不会声明ArrayList<int>,但您可以使用a实现类似的功能ArrayList<Integer>.

偶尔使用它来初始化变量的值null.但是,基元不能设置为null; 该特权是为对象保留的.

// This is OK
Integer iDontKnowValueYet = null;

// Compile error!
int iDontKnowThisYetEither = null;
Run Code Online (Sandbox Code Playgroud)