Java 你的第一門程式語言

環境

Java Developer Kit Visual Studio Code

一個 Java 程式

在 Java 裡,每個程式都要放在一個 class 裡,而要讓程式能執行,必須告訴電腦我的程式從哪裡開始執行,這個起點就是 main method~ (method 在其他程式語言中通常稱作 function)

1class Skills {
2    public static void main(String[] args) { // main method
3        // 程式從這開始執行...
4    }
5}

HelloWorld

這個程式往往是初學者或某個專案的開場白,其用意是讓程式設計者透過輸出"HelloWorld"到 console 來檢查環境是否可正常執行程式碼

1public class Skills {
2  public static void main(String[] args) {
3    System.out.print("Hello World");
4  }
5}

資料輸出

雖然都是用來輸出文字到螢幕上的語法,但它們有一些小差異

1System.out.print("Meow~~"); // 不換行
2System.out.println("Meow~~"); // 會在輸出後自動換行
3System.out.printf("Meow~~"); // 可用格式化輸出(類似 C# 語言的 printf)

變數 / 資料型態

變數用於儲存資料,創建每個變數時你需要告訴Java這個變數是什麼樣的型態,他是數字、文字、小數...

查查看: Java 有哪些資料型態呢? 參考文章

一些小範例:

1int number = 10;
2
3float myFloatNum = 5.99f;
4
5double myDoubleNum = 5.8999;
6
7String name = "Kitten";
8
9boolean turnOn = false;

輸出變數

如果你想要把變數給顯示出來的話,主要有三種方法: 最簡單就是直接把變數放進去print中顯示

1int number = 10;
2System.out.println(number); // 把 number 這個變數顯示出來

如果你想要除了變數外加上文字可以用加號把他們連在一起

加號在字串中代表「連接」,而不是數學加法喔

1int age = 3;
2System.out.println("我今年 " + age + " 歲");

但如果你想要更靈活地控制輸出格式,你可以用在字串中插入標記(如下面的%d、%s),並在後面依序告訴它這些代號代表什麼變數

查查看: 有哪些標記可以使用呢,它們分別適用於哪種資料型態?

1int age = 10;
2String name = "Kitten";
3
4System.out.printf("Hello 我是%s, 我今年%d",name, age)

資料輸入

有輸出就一定有輸入,在Java中我們可以用一個內建的工具叫Scanner來讀取使用者輸入的資料 Scanner 參考文檔 因為Scanner這個工具並非在編譯時就自動載入,所以我們會需要用import這個語法來將這個工具導入進我們的程式中 ,在Java中有一些預設的套件,每個套件中有不同的工具可以給我們使用,例如Scanner這個工具是來自javautil套件中,因此當我們要使用它時,我們可以:

1import java.util.Scanner;

在大部分的程式語言中,.通常代表的意思

導入工具後我們首先要為這個工具建立一個物件,接著就可以用它來讀取使用者數出的內容囉~

1Scanner input = new Scanner(System.in);
2String name = input.nextLine();
3
4System.out.println("Yeee哈囉" + name + "很高興認識你~");

運算式

就像數學中的加減乘除,在Java中我們使用「+」、「-」、「*」、「/」去做計算,運算式可以是算式運算(+ or - )、比較運算(> or ==)。當運算式中有不同型態出現,Java會自行切換型態

1int a = 10;
2int b = 20;
3
4System.out.printf("a = %d,b = %d",a,b); // 計算前
5b = b - a; // 也可以直接寫 b -= a
6System.out.printf("a = %d,b = %d",a,b); // 計算後

While 跑跑跑

while迴圈可以在()中的執行條件成立時,重複執行被{}包起來的程式碼,當()中的條件不成立時或在迴圈中使用break;語法時便會結束這個迴圈。 而如果在迴圈中使用continue;語法時程式便會跳過該語法在迴圈中之後的程式有就是直接結束這次的迴圈,直接執行下一輪迴圈。

做個整理:

  • 使用 break; 可以提前結束整個迴圈。
  • 使用 continue; 可以跳過本次後續程式,直接進入下一次迴圈。

舉個簡單的例子,像下面這個程式因為while的執行條件為true所以他會一直跑直到你手動把程式給結束掉,我們稱這種迴圈為無窮迴圈,

1while (true) {
2    System.out.println("這個程式會執行");
3}

以下是兩個執行解果相同的程式:

使用while內建的判斷式

1int a = 0;
2
3while (a < 10) {
4    System.out.println(a);
5    a++;
6}
7
8System.out.printf("迴圈結束");

while的判斷式代true,在迴圈中使用if進行判斷使否要結束迴圈

1int a = 0;
2
3while (true) {
4    if (a >= 10){
5        break;
6    }
7    System.out.println(a);
8    a++;
9}
10
11System.out.printf("迴圈結束");

For 迴圈

不知道你會不會覺得,上面的while迴圈明明只是要重複跑一段程式碼10次卻要寫著麼長的程式碼有點麻煩呢? 這時候你可能就會想用for迴圈來寫這樣的程式 for 迴圈通常用來在已知執行次數的情況下重複執行一段程式,它會在 () 中依序包含三個部分:

for (起始值; 是否要執行判斷條件; 每次迴圈結束後執行的動作)

在每次迴圈中,會先執行「初始化」,也就是向上方while迴圈一樣建立一個變數方便再迴圈中調用,接著檢查「條件判斷」, 若條件為 true,就執行 {} 內的程式碼,然後執行「每次迴圈結束後的動作」, 之後再回到條件判斷,如此重複,直到條件不成立為止。 同樣的這裡也可以用break;continue;

舉個和上面while相同解果的例子: 下面這段程式會從 0 數到 9,當 i 到達 10 時條件不成立,迴圈就會結束。

1for (int a = 0; a < 10; a++) {
2    System.out.println(a);
3}
4
5System.out.println("迴圈結束");

Yeee 看起來好像有點複雜耶,但是如果你把它和while迴圈比較看看,就會發現他其實就只是把它迴圈核心的邏輯簡化成一行而已喔~ for vs while

陣列

Java陣列 參考文檔