2012-02-03 88 views
0

我正在使用int duration = Integer.parseInt(durationInString)將String對象轉換爲原始的整數值。我在一個while循環中使用它,並且每秒都會發生整數轉換,直到視頻持續時間結束。例如 - 如果視頻是2分鐘,我會撥打Integer.parseInt 120次。 我想知道是否每次致電Integer.parseInt創建一個對象?如果是這樣,連續調用它不是個好主意嗎?Integer.parseInt(String)創建對象嗎?

任何幫助,非常感謝。

注:我工作在Android應用

感謝, SKU

+6

是否有一個原因你必須每秒撥打一次?我猜測視頻的持續時間不會改變,僅僅調用一次就足夠了嗎?如果沒有好的理由,那麼是的,這是一個壞主意。 – ggreiner 2012-02-03 20:05:47

+0

每秒一次不是很經常。垃圾收集器可以輕鬆應對。 – Guillaume 2012-02-03 20:12:02

+0

@ggreiner我每秒鐘都會調用它的原因是獲取視頻播放的當前位置。通過獲取返回值...我將設置進度條的位置來更新視圖。 – sku 2012-02-03 21:17:37

回答

2

內部,該方法可能會創建對象,但是由於返回值是一個int它不生產該泄漏給您的任何對象, 呼叫者,召集者。我不擔心像這樣的對象創建的效率問題,因爲大多數JVM都有專門優化的垃圾收集器來收集不再被引用的年輕對象。如果您有理由相信此方法正在以實際導致問題的速率創建對象,請拔出一個分析器以檢查它。我敢打賭,這不是一個瓶頸。

希望這會有所幫助!

5

如果您查看Integer.parseInt的源代碼,則不會創建任何對象。

也就是說,120次不值得擔心。

+2

儘管公平地說,庫設計者可以自由地實現這種方法,因爲他們認爲合適,並且確實可以在內部分配對象。 – templatetypedef 2012-02-03 21:32:04