自訂資料型態及資料結構

目的

Java 的原生基本資料型態共有 8 個,比如 int、short….。當我們想要建立一個叫 Student 的資料型態,裏面有名字、英文成績、數學成績,此時就必需把這三項型態組合成一個自訂的資料型態。

語法

自訂的資料型態在 C 語言使用 struct 指令,在 Java 裏直接改成 class。請注意如下 class Student 是寫在 public class Test 之外,也就是外部類別。

要產生一個新的 Student,使用 new 關鍵字。這跟 C 語言調用 malloc() 函數一樣,都是跟系統要求某一區塊的記憶體。產生出來的 s1 稱為物件 (Object)。要存取 s1 裏的 name、eng 就直接在 s1後面加上「.」。 「.」 就是「的」, 比如 s1.name 即「s1 的 name」。

public class Test {
    public static void main(String[] args){
        Student s1=new Student();
        s1.name="Thomas";
        s1.eng=100;
        s1.math=80;
    }
}
class Student{
    String name;
    int eng, math;
}

上面的代碼可以簡略下一個定論 : 什麼是類別 (class) ? 類別就是一個自訂的資料型態。

預設值

產生出來的 s1,裏面的變數會被系統自動初始化, String 初始化為 null,int 初始化為 0,小數初始化為 0.0。

public class Test {
    public static void main(String[] args){
        Student s1=new Student();
        System.out.printf("namd : %s, eng : %d, math : %d\n", s1.name, s1.eng, s1.math);
    }
}
class Student{
    String name;
    int eng, math;
}
結果 : 
namd : null, eng : 0, math : 0

單向連結

陣列的限制

使用陣列時,必需先宣告,如

int[] array=new int[10];

a 是一個長度為10 個元素的陣列,一經宣告長度就不能改變。重點在於一開始我們怎麼知道是要宣告為 10 或 100 呢?

比如要記錄每個客人消費的金額,打從一開門,到底是要宣告有幾個客人? 因為無法預測,所以無法定長度。

解決方案

上述的問題很明顯使用陣列是無法解決,所以必需另想辦法。下圖即是資料結構課程裏頂頂有名的單向連結。先產生一個 root 及 index,並產生一個節點 @f1。

🔒 底下內容僅限會員閱讀。

立即登入

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *