2012-01-06 151 views

回答

27

是的。 Java long在任何JVM上都是64位,無一例外。所有Java基元類型都是完全可移植的,並且在所有實現中都具有固定大小。

+5

JLS參考:http://java.sun.com/docs/books/jls/third_edition/html/typesValues.html#4.2.3 – Mat 2012-01-06 15:08:53

4

是的。 A long被稱爲64位整數。

4

原始類型始終是相同的大小。只有引用可以改變大小,但你通常不需要知道這一點。

您可以

int addressSize = Unsafe.addressSize(); 

注獲得參考的尺寸:即使是在64位JVM(在最新的Java的JVM 6+),引用是32位的,但除非你使用32 GB堆或更大。這是OpenJDK/Sun/Oracle JDK的默認值,但是@ user988052指出,IBM JVM需要在命令行上設置適當的標誌。其他JVM可能根本不支持此選項。

+0

*即使在64位JVM(在最新的Java 6+ JVM上)中,引用是32位,除非你使用32 GB的堆或更大* ...是不是依賴於JVM? * -XX:Oracle/Sun JVMs上的+ UseCompressedOOps *現在確實是默認的,但據我所知,例如IBM JVM明確指出,如果您不*使用* Xcompressedrefs * VM參數,那麼引用在默認情況下存儲在64位... – TacticalCoder 2012-01-06 16:12:55

+0

我已更新我的答案,包括您的評論,謝謝。 – 2012-01-06 16:21:08