java基本數(shù)據(jù)類型
四大類、八小類
- 整數(shù)類型(四種)
- 字節(jié)型/位(byte)
- 短整型(short)
- 整型(int)
- 長整型(long)
- 浮點類型(兩種)
- 單精度浮點型(float)
- 雙精度浮點型(double)
- 字符類型(char)
- 布爾類型(boolean)
注意,字符串不屬于“基本數(shù)據(jù)類型”,屬于引用類型,深層的儲存方式見文末
各基本類型的儲存大小
圖
| 數(shù)據(jù)類型 | 字節(jié) | 表示范圍/取值范圍(以下表示除boolean、char,其余為十進制) |
|---|---|---|
| 字節(jié)型/位(byte) | 1 | -128~127(-2的7次方到2的7次方-1) |
| 短整型(short) | 2 | -32768~32767(-2的15次方到2的15次方-1) |
| 整型(int) | 4 | -2147483648~2147483647(-2的31次方到2的31次方-1) |
| 長整型(long) | 8 | -9223372036854774808~9223372036854774807(-2的63次方到2的63次方-1) |
| 單精度浮點型(float) | 4 | 3.402823e+38 ~ 1.401298e-45(e+38表示是乘以10的38次方,同樣,e-45表示乘以10的負45次方) |
| 雙精度浮點型(double) | 8 | 1.797693e+308~ 4.9000000e-324 |
| 字符類型(char) | 1 | \u0000~\uFFFF(unicode編碼) |
| 布爾類型(boolean) | 1 | true和false(真和非真) |
ps:Markdown表格插入方法參考,插入Markdown行內(nèi)超鏈接方法參考,數(shù)據(jù)類型取值范圍參考
需要注意的tips
- char(這部分參考java基本數(shù)據(jù)類型取值范圍)
用于存放字符的數(shù)據(jù)類型,占用2個字節(jié),采用unicode編碼,它的前128字節(jié)編碼與ASCII兼容
字符的存儲范圍在\u0000~\uFFFF,在定義字符型的數(shù)據(jù)時候要注意加' ',比如 '1'表示字符'1'而不是數(shù)值1,
char c = ' 1 ';
我們試著輸出c看看,System.out.println(c);結(jié)果就是1,而如果我們這樣輸出呢System.out.println(c+0);
結(jié)果卻變成了49。
如果我們這樣定義c看看
char c = ' \u0031 ';輸出的結(jié)果仍然是1,這是因為字符'1'對應(yīng)著unicode編碼就是\u0031
char c1 = 'h',c2 = 'e',c3='l',c4='l',c5 = 'o';
System.out.print(c1);System.out.print(c2);System.out.print(c3);System.out.print(c4);Sytem.out.print(c5); - 浮點型和整型
10.0 嚴格來講屬于浮點型字面值(區(qū)別于 10 屬于整型)
稍作延伸,浮點型的概念(來自度娘):
由十進制數(shù),加階碼標志“e”或“E”以及階碼(只能為整數(shù),可以帶符號)組成。簡單來說,為啥叫浮點,浮動變化的是階碼(心里有點方,這個點是看《匯編語言》的時候記住的,沒有實料參考,此處是記憶),可以理解成,整型因為階碼(或者指數(shù)的冪)不變,而浮點類型的冪是變化的,所以浮點的數(shù)值范圍更大。 - char 的單獨點
因為一個漢字占兩個字節(jié),一個Unicode編碼占兩個字節(jié),所以Java中的char類型可以儲存漢字。
樣例
各基本數(shù)據(jù)類型在JVM中的存儲方式(TODO 后面復(fù)習JVM時再與之結(jié)合學習)
附一張JVM的分區(qū)圖,下圖主要突出常量池概念,想說明的一點是,與圖中的“運行時常量池”不一樣,String類型的字符串儲存在“字符串常量池”中,而JDK1.7及之后的版本中,字符串常量池存在于堆中

jvm-1
再看一張圖,我們發(fā)現(xiàn),基本數(shù)據(jù)類型儲存在棧中:

jvm-2
結(jié)論:字符串類型儲存在堆中的字符串常量池中(new String("1")這種參考引用類型儲存,來源參考,基本數(shù)據(jù)類型儲存在棧中
注:JDK1.6(含)之前常量池是放在JVM中的方法區(qū)中的,許多人也叫它“永久代”-java jdk1.7常量池移到哪去了?
