2011-01-07 140 views
16

哪一个编程最好 - intInteger?特别是当两个人都在做同样的任务时?比较int和Integer的性能

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

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

回答

21

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

看一下thisthis的文章。尽管你不应该把它们当作绝对真理,但它们确实表明对象比原始对象要慢。因此,尽可能使用int(我将重复自己:如果你正在编写性能关键代码)。如果一个方法需要一个Integer,那就用它来代替。

如果您不关心性能并希望以面向对象的方式完成所有任务,请使用Integer

+0

感谢您的回答 – DJJ 2011-01-07 11:53:21

+4

性能不是唯一需要考虑的事情。 int将使用比Integer更少的内存(大致来说Integer需要两倍的内存)。如果你正在处理很多数字,这可能会产生实质性的差异 – 2011-01-07 12:24:52

3

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

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

1

int是原始类型,Integer是一个包装为对象的int类型。

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

6

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

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

作为另一种观点....也许你应该既不使用也不整数INT。

如果该值是真正与行为的对象 - 好比说的金额,或距离什么的,那么也许你应该使用与行为的对象。

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

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

虽然这可能是“慢”,另外的类型安全可以使系统的编程,测试和调试更加容易&更快。