[英]Integer range when using 64bit jdk
據我所知,32位和64位兩個整數之間的區別如下:32位范圍-2,147,483,648到2,147,483,647 64位范圍:-9,223,372,036,854,775,808到+9,223,372,036,854,775,807
我使用的是64位jdk,我通過打印以下內容來驗證它:System.out.println(“JVM Bit size:”+ System.getProperty(“sun.arch.data.model”));
JVM位大小:64
當我嘗試初始化一個數字大於10個字母的新Integer變量時,我得到一個編譯錯誤。 這是為什么? 它看起來像64位更大
示例(在netbeans上運行):int x = 12345678910; =>錯誤:整數太大
Java中int
的大小完全獨立於JDK的32位或64位。 它總是4個字節= 32位= -2,147,483,648到2,147,483,647。
如果需要64位整數,請使用long
,即64位= 8字節。
與其他語言不同,Java的數字基元類型總是大小相同,無論平台如何(32位或64位,LE或BE); 它們都是大端和是1個字節長為byte
,長2個字節用於short
和char
,長為4個字節int
和8個字節長為long
。
如果不是這樣的話,罐子不能跨平台移動......
您最好的資源是JLS :
整數類型是byte,short,int和long,其值分別為8位,16位,32位和64位二進制補碼整數,以及char,其值為16位無符號整數代表UTF-16代碼單元
4.2.1。 積分類型和值
整數類型的值是以下范圍內的整數:
對於字節,從-128到127(含)
簡而言之,從-32768到32767,包括在內
對於int,從-2147483648到2147483647,包括在內
很長一段時間,從-9223372036854775808到9223372036854775807,包括
對於char,從'\\ u0000'到'\\ uffff',包括0到65535
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.