2011-01-07 122 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

雖然這可能是「慢」,另外的類型安全可以使系統的編程,測試和調試更加容易&更快。