比较int和Integer的性能
哪一个最适合编程 – int
或Integer
? 特别是每个人都在做同样的任务?
我正在用Java编写应用程序。 在原始数据类型的大多数地方,我使用int
; 对于对象,我使用Integer
。 所以我很困惑 – 哪一个是最好的地方,我们必须使用对象。
根据性能,哪一个最适合Java应用程序?
尽可能使用int
,并在需要时使用Integer
。 由于int
是原始的,因此它会更快。 现代JVM知道如何使用自动装箱来优化Integer
,但是如果你正在编写性能关键代码,那么int
就是最佳选择。
看看这篇文章和这篇文章。 虽然你不应该将它们视为绝对真理,但它们确实表明对象将比原始对象慢。
因此,尽可能使用int
(我将重复自己:如果您正在编写性能关键代码)。 如果方法需要Integer,请改用它。
如果您不关心性能并希望以面向对象的方式执行所有操作,请使用Integer
。
尽可能使用int
。 仅在以下情况下使用Integer
:
- 你需要一种方法来表示“没有价值”或“未初始化”。
Integer
可以为null
,int
总是具有int值。 - 您希望使用像
List
这样的集合(尽管您可以在外部使用int
并使用autoboxing隐藏集合内部存储Integer
实例的事实)。 - 您正在使用需要使用
Integer
或Object
的API,框架或工具,或者不能使用基本类型。 - 您需要能够在对象上进行同步(非常不可能)。
int
一个原语,通常它应该更快。 它只携带原始数据。
Integer
是一个对象,它带有一些额外的东西,所以你可以把数字放在列表中。
int是原始的,Integer是一个包裹为对象的int。
这取决于你将如何使用它们。
作为另一种观点….也许你既不应该使用Integer也不应该使用int。
如果值实际上是具有行为的对象 – 比如说金额,或距离或某事,那么也许您应该使用具有行为的对象。
你可以在这里看到更多关于这种事情:
http://www.time4tea.net/wiki/display/MAIN/Microtypes
虽然这可能会“慢”,但额外的类型安全性将使您的系统的编程,测试和调试变得更加容易和快捷。