int
是一个数字;一个 Integer
是一个指针,可以引用包含数字的对象。使用 Integer
进行算术运算需要更多的 CPU 周期和内存消耗。一个 int
不是一个对象,不能传递给任何需要对象的方法(就像你对泛型的说法一样)。非基本类型是对象。它们需要动态分配内存、进行垃圾回收,并检查是否为空(尽管这些操作中的一些可能会被优化编译器移除)。读取它们的实际值需要从指针加载。基本类型是值。它们通常占用较少的空间,并且访问速度更快。
一个好的经验法则是,使用基本类型除非你需要多态性,在这种情况下,请使用相应的对象。
在类型转换时会有轻微的惩罚 (自动装箱)。此外,int
的开销会稍微少一些,因此如果可以的话,我总是会选择 int
。
另请参见这个问题:何时在Java中使用基本类型和引用类型
在Java中,int
是原始数据类型,而Integer
是一个包装类。
int
作为原始数据类型具有较少的灵活性。我们只能在其中存储整数的二进制值。
由于Integer
是int
数据类型的包装类,因此它在存储、转换和操作整数数据方面具有更多的灵活性。
Integer
是一个类,因此可以调用在class
中定义的各种内置方法。与任何其他引用(对象)类型一样,类型为Integer
的变量存储对Integer
对象的引用。
您可以在这里找到更详细的解释。
我的观点是:使用整数作为参数或返回值允许一件原始 int 不允许的事情:使用 null
。但这是一个好主意吗?我认为很少是。
就性能而言:编译器会对您的代码进行一定程度的优化,因此大多数情况下这不是真正的问题。