【從零開始學 Java 程式設計】基本與參考資料型態
【從零開始學 Java 程式設計】 線上教學課程目錄,使用 Java 程式語言,開發應用程式。
Java 資料型態
Java 的資料型態,分為兩大類,分別是:
- 基本資料型態 Primitive type
- 參考資料型態 Reference type
若都沒有定義任何資料型態,則為 Null Type,空型態。
基本資料型態 Primitive type
本篇則先來介紹,基本資料型態 Primitive type,Java 提供了八種基本資料型態:
byte, short, int, long, float, double, char, boolean,根據資料類型,又可以區分成,整數數字、浮點數數字、字元和布林類型,四種如下:
byte, short, int, long, float, double, char, boolean,根據資料類型,又可以區分成,整數數字、浮點數數字、字元和布林類型,四種如下:
數字,整數類型:byte, short, int, long
資料型態 | 表示範圍 | 預設值 |
---|---|---|
byte | -128 to +127 | 0 |
short | -32768 to +32767 | 0 |
int | -2147483648 to +2147483647 | 0 |
long | -9223372036854775808 to +9223372036854775807 | 0L |
印出資料類型大小、最小值和最大值語法:
資料類型.SIZE //印出資料類型大小
資料類型.MIN_VALUE //印出資料類型最小值
資料類型.MAX_VALUE //印出資料類型最大值
以 byte 為例:
// 印出 byte 最小值、最大值
System.out.println("===byte===");
System.out.println("Byte.SIZE= :" + Byte.SIZE);
System.out.println("最小值:Byte.MIN_VALUE= " + Byte.MIN_VALUE);
System.out.println("最大值:Byte.MAX_VALUE= " + Byte.MAX_VALUE);
數字,浮點數類型:float, double
資料型態 | 表示範圍 | 預設值 |
---|---|---|
float | -3.40292347E+38 to +3.40292347E+38 | 0f |
double | -1.7976931348623157E+308 to +1.7976931348623157E+308 | 0d |
字元類型:char
資料型態 | 表示範圍 | 預設值 |
---|---|---|
char | ‘\u0000’ to ‘\uFFFF’ | ‘\u0000’ |
字元補充資料:Unicode字元列表-維基百科
布林類型:boolean
資料型態 | 表示範圍 | 預設值 |
---|---|---|
boolean | true or false | false |
資料溢位 Overflow
若使用超過或小於該資料表示範圍,運算結果將會造成錯誤。
以 Byte 資料型態為例,範圍為 127 ~ -128,最大值為 127,最小值為 -128。
若資料存大於或小於,編譯器則會提示資料值已超過不符合該資料型態能處理的範圍錯誤。
若資料存大於或小於,編譯器則會提示資料值已超過不符合該資料型態能處理的範圍錯誤。
另外可能發生的錯誤,當數值運算後,存到變數中,超過或小於該資料型態能表示的範圍,也是會是造成運算上的錯誤。
進階:補充資料
使用後缀字,來定義數字資料類型
十進制:123
長整數資料型態以大寫的 L 結尾:123L
16 進制以 0x 開頭:0x0F
8進制以0開頭
2 進制以0b 開頭:0b00001011
Doubles 默認寫法: 123.5, 123.5e10
Floats 使用小寫 f 或者大寫 F 後綴:123.5f
長整數資料型態以大寫的 L 結尾:123L
16 進制以 0x 開頭:0x0F
8進制以0開頭
2 進制以0b 開頭:0b00001011
Doubles 默認寫法: 123.5, 123.5e10
Floats 使用小寫 f 或者大寫 F 後綴:123.5f
進階:參考資料型態 Reference type
簡單來說,只要不是上述的八種基本資料型態,其他都是是參考資料型態。參考資料型態預設資料值,皆為 null,所以若存取到沒有被實體畫的 null 的物件變數,就會出現 NullPointerException。
常見參考資料型態:
- 物件 (object)
- 字串 (String)
- 自定義的類別 (class)
- 陣列 (Array)
- 介面 (interface)
- 列舉 (enum)
基本與參考資料型態,兩者之間最大的不同,主要差異在記憶體配置的機制是不同的。程式執行期間,記憶體可分成三個部份:
- Global (全域)
此區塊記憶體,主要用來存放全域變數(global variable)、靜態變數(static variable)。 - Stack (堆疊)
此區塊記憶體,主要用來存放區域變數(local variable)、方法的參數(method parameter)與方法的回傳位址(method return address)等。此區塊記憶體,在編譯時期就已決定好生命週期,作業系統會自動化來管理,決定什麼時候要回收資源。如果 Stack 區不夠用或是遞回涵式(recursive function)沒寫好,會產生,常見典型的錯誤 StackOverFlow Error 的錯誤。 - Heap (堆積)
可以被預測的資料放在堆疊區(Stack Memory),而不可被預測的資料就放在堆積區(Heap Memory)。什麼事不可預測的資料呢?就是需要在程式執行後,才知道用多少記憶體,相對的此區塊資料,作業系統不會自動進行回收,程式設計師必須自行管理此區的記憶體,透過 GC,Garbage Collection,垃圾回收,釋放用不到的資源記憶體空間。而 Heap 區,若記憶體不夠用,則會產生 OutOfMemoryError。
練習題
1.何謂八種基本資料型態?
2.何謂資料溢位?
3.基本資料型態與參考資料型態差異在哪裡?
4.解釋 Global、Stack 和 Heap memory 差異?
5.解釋何時會發生,NullPointerException?
6.解釋何時會發生,StackOverFlow Error?
7.解釋何時會發生,OutOfMemoryError?
2.何謂資料溢位?
3.基本資料型態與參考資料型態差異在哪裡?
4.解釋 Global、Stack 和 Heap memory 差異?
5.解釋何時會發生,NullPointerException?
6.解釋何時會發生,StackOverFlow Error?
7.解釋何時會發生,OutOfMemoryError?
那這次的課程就介紹到這邊囉~
順帶一提,KT 線上教室,臉書粉絲團,會不定期發佈相關資訊,不想錯過最新資訊,不要忘記來按讚,加追蹤喔!也歡迎大家將這套課程分享給更多人喔。
我們下次再見囉!!!掰掰~