比较int和Integer的性能

时间:2011-01-07 11:18:33

标签: java

哪一个最适合编程 - intInteger?特别是每个人都在做同样的任务?

我正在用Java编写应用程序。在原始数据类型的大多数地方,我使用int;对于对象,我使用Integer。所以我很困惑 - 哪一个是最好的地方,我们必须使用对象。

根据性能,哪一个最适合Java应用程序?

5 个答案:

答案 0 :(得分:28)

尽可能使用int,并在需要时使用Integer。由于int是原始的,因此它会更快。现代JVM知道如何使用自动装箱优化Integer,但如果您正在编写性能关键代码,int是可行的方法。

查看thisthis文章。虽然你不应该将它们视为绝对真理,但它们确实表明对象将比原始对象慢。

所以,尽可能使用int(我会重复自己:如果你正在编写性能关键代码)。如果某个方法需要Integer,请改用它。

如果您不关心性能并希望以面向对象的方式执行所有操作,请使用Integer

答案 1 :(得分:6)

尽可能使用int。仅在以下情况下使用Integer

  • 您需要一种表示“无价值”或“未初始化”的方式。 Integer可以是nullint总是有一个int值。
  • 您希望使用List之类的集合(尽管您可以在外部使用int并使用自动装箱隐藏集合内部存储Integer个实例的事实。)
  • 您使用的API,框架或工具要求您使用IntegerObject,或者不能使用原始类型。
  • 您需要能够在对象上进行同步(非常不可能)。

答案 2 :(得分:3)

int一个原语,通常应该更快。它只包含原始数据。

Integer是一个对象,它带有一些额外的东西,所以你例如可以将号码放在列表中。

答案 3 :(得分:1)

int是原始的,Integer是一个包裹为对象的int。

这取决于你将如何使用它们。

答案 4 :(得分:1)

作为另一种观点....也许你既不应该使用Integer也不应该使用int。

如果该值实际上是一个具有行为的对象 - 比如说金额,或距离或其他东西,那么也许你应该使用一个有行为的对象。

您可以在此处查看有关此类事情的更多信息:

http://www.time4tea.net/wiki/display/MAIN/Microtypes

虽然这可能会“慢”,但额外的类型安全性将使您的系统的编程,测试和调试变得更加容易。更快。