【從零開始學 Java 程式設計】基本與參考資料型態

【從零開始學 Java 程式設計】 線上教學課程目錄,使用 Java 程式語言,開發應用程式。

Java 資料型態

Java 的資料型態,分為兩大類,分別是:
  1. 基本資料型態 Primitive type
  2. 參考資料型態 Reference type
若都沒有定義任何資料型態,則為 Null Type,空型態。

基本資料型態 Primitive type

本篇則先來介紹,基本資料型態 Primitive type,Java 提供了八種基本資料型態:
byte, short, int, long, float, double, char, boolean,根據資料類型,又可以區分成,整數數字、浮點數數字、字元和布林類型,四種如下:

數字,整數類型:byte, short, int, long

資料型態表示範圍預設值
byte-128 to +1270
short-32768 to +327670
int-2147483648 to +21474836470
long-9223372036854775808 to +92233720368547758070L

印出資料類型大小、最小值和最大值語法:

資料類型.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+380f
double-1.7976931348623157E+308 to +1.7976931348623157E+3080d

字元類型:char

資料型態表示範圍預設值
char‘\u0000’ to ‘\uFFFF’‘\u0000’
字元補充資料:Unicode字元列表-維基百科

布林類型:boolean

資料型態表示範圍預設值
booleantrue or falsefalse

資料溢位 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

進階:參考資料型態 Reference type

簡單來說,只要不是上述的八種基本資料型態,其他都是是參考資料型態。參考資料型態預設資料值,皆為 null,所以若存取到沒有被實體畫的 null 的物件變數,就會出現 NullPointerException。
常見參考資料型態:
  • 物件 (object)
  • 字串 (String)
  • 自定義的類別 (class)
  • 陣列 (Array)
  • 介面 (interface)
  • 列舉 (enum)
基本與參考資料型態,兩者之間最大的不同,主要差異在記憶體配置的機制是不同的。程式執行期間,記憶體可分成三個部份:
  1. Global (全域)
    此區塊記憶體,主要用來存放全域變數(global variable)、靜態變數(static variable)。
  2. Stack (堆疊)
    此區塊記憶體,主要用來存放區域變數(local variable)、方法的參數(method parameter)與方法的回傳位址(method return address)等。
    此區塊記憶體,在編譯時期就已決定好生命週期,作業系統會自動化來管理,決定什麼時候要回收資源。如果 Stack 區不夠用或是遞回涵式(recursive function)沒寫好,會產生,常見典型的錯誤 StackOverFlow Error 的錯誤。
  3. 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?

那這次的課程就介紹到這邊囉~
順帶一提,KT 線上教室,臉書粉絲團,會不定期發佈相關資訊,不想錯過最新資訊,不要忘記來按讚,加追蹤喔!也歡迎大家將這套課程分享給更多人喔。
我們下次再見囉!!!掰掰~

這個網誌中的熱門文章

2023 最新入門零基礎 Kotlin教學【從零開始學 Kotlin 程式設計】Kotlin 教學課程目錄 (Android Kotlin, IntelliJ IDEA, Android Studio, Android APP 開發教學)

nano 文字編輯器

16天記下7000單字

最新入門零基礎 Java 教學【從零開始學 Java 程式設計】Java教學課程目錄 (IntelliJ IDEA 開發教學)

Android Studio 歷代版本下載點