Java 是靜態型別的語言,這代表變數的型別在編譯期就已經確定。 把值指定給一個名稱,就稱為定義變數。 定義變數時,必須明確指定它的型別。
int explicitVar = 10;
更新變數的值是透過=運算子來完成。
在這裡,=並不代表數學上的相等。
它只是把值指定給變數而已。
變數一旦定義之後,型別就永遠不會改變。
int count = 1; // Assign initial value
count = 2; // Update to new value
// Compiler error when assigning a different type
// count = false;
Java 是一種物件導向語言,而且所有函式都必須定義在一個_類別_中。
class關鍵字就是用來定義類別。
class Calculator {
// ...
}
類別內的函式稱為_方法_。
每個方法可以有零個或多個參數。
所有參數都必須明確標註型別,參數沒有型別推斷。
同樣地,回傳型別也必須明確標示。
方法使用return關鍵字回傳值。
若要讓其他類別能呼叫某個方法,就必須加上 public 存取修飾子。
class Calculator {
public int add(int x, int y) {
return x + y;
}
}
呼叫方法時,需要指定它的類別與方法名稱,並為方法的每個參數傳入引數。
int sum = new Calculator().add(1, 2); // here the "add" method has been called to perform the task of addition
Java 中的作用域定義在{與}字元之間。
Java 支援兩種註解。
單行註解以//開頭,多行註解則放在/*與*/之間。
在這個練習中,你會寫一些程式碼,幫助你照著最愛的食譜做出美味的千層麵。
你有四項任務,全都和烹調千層麵所花的時間有關。
定義expectedMinutesInOven()方法,這個方法不接受任何參數,並回傳千層麵應該在烤箱中烤幾分鐘。根據食譜,預期的烤箱時間是 40 分鐘:
Lasagna lasagna = new Lasagna();
lasagna.expectedMinutesInOven();
// => 40
定義remainingMinutesInOven()方法,這個方法接受千層麵已經在烤箱中的實際分鐘數作為參數,並根據上一項任務的預期烤箱時間,回傳千層麵還需要在烤箱中待幾分鐘。
Lasagna lasagna = new Lasagna();
lasagna.remainingMinutesInOven(30);
// => 10
定義preparationTimeInMinutes()方法,這個方法接受你加到千層麵中的層數作為參數,並回傳你準備千層麵花了多少分鐘,假設每一層需要花 2 分鐘準備。
Lasagna lasagna = new Lasagna();
lasagna.preparationTimeInMinutes(2);
// => 4
定義totalTimeInMinutes()方法,這個方法接受兩個參數:第一個參數是你加到千層麵中的層數,第二個參數是千層麵已經在烤箱中的分鐘數。這個函式應該回傳你烹調千層麵總共花了幾分鐘,也就是準備時間的分鐘數,加上千層麵當下已經在烤箱中待的分鐘數。
Lasagna lasagna = new Lasagna();
lasagna.totalTimeInMinutes(3, 20);
// => 26