【從零開始學 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 開發教學)

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

2022 最新入門零基礎 Flutter教學 【Flutter 程式設計入門實戰 30 天】Flutter 教學課程目錄 (IntelliJ IDEA 開發教學)

nano 文字編輯器

Android Studio 歷代版本下載點