2010-01-20 166 views
8

即使我們有一個整數對象作爲整數,爲什麼有整數(int)的原始類型? 但是與String類型不一樣。 String沒有這種基本類型。總是String處理對象引用?整型爲原始類型

回答

18

速度。機器代碼使用本機CPU指令添加兩個int的速度要快得多,而不必採用兩個Integer對象,從中提取int值,然後添加它們,從而創建一個新的結果Integer對象以包含結果。 (how JNI maps primitives

字符串很複雜,有很多方法,因此沒有機器代碼對位。他們被提升爲一個真正的對象。此外,一個String與其他字符串共享狀態使用相同的值創建。沒有原始值與這樣的其他原始值共享狀態。 (immutable can be shared | primitive no sharing

+1

我也會增加空間。將整數存儲到內存的空間較小,而不是整個對象的所有操作。 – Alex 2010-01-20 05:11:45

0

一個字符串數據類型比int要複雜得多 - 有一個可變數量的內存來容納一個字符串。

1

這是因爲處理器(CPU)直接支持整數類型,但不支持字符串。由於性能方面的原因,Java支持一些可能由JVM可能運行的處理器支持的本機類型。

0

最終計算是在機器級語言完成的。我想知道是什麼在性能方面造成了基元和對象之間的差異。詳細的答案將不勝感激。

+0

這應該是一個評論 - 不是'答案'請在這裏競爭SO遊覽:http://stackoverflow.com/tour – 2015-05-11 05:15:06