比较int和Integer的性能

问题描述 投票:19回答:5

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

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

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

java
5个回答
28
投票

尽可能使用int,并在需要时使用Integer。由于int是原始的,它会更快。现代JVM知道如何使用自动装箱来优化Integers,但如果你正在编写性能关键代码,那么int就是最佳选择。

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

因此,尽可能使用int(我将重复自己:如果您正在编写性能关键代码)。如果方法需要Integer,请改用它。

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


6
投票

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

  • 你需要一种方法来表示“没有价值”或“未初始化”。 Integer可以是nullint总是有一个int值。
  • 你想使用像List这样的集合(尽管你可以在外部使用int并且自动装箱会隐藏集合内部存储Integer实例的事实)。
  • 您正在使用需要使用IntegerObject的API,框架或工具,或者不能使用基本类型。
  • 您需要能够在对象上进行同步(非常不可能)。

3
投票

int是一个原始的,通常它应该更快。它只携带原始数据。

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


1
投票

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

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


1
投票

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

如果值实际上是具有行为的对象 - 比如说金额,或距离或某事,那么也许您应该使用具有行为的对象。

你可以在这里看到更多关于这种事情:

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

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

© www.soinside.com 2019 - 2024. All rights reserved.