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 {
// ...
}
クラス内の関数は、_メソッド_と呼ばれます。
各メソッドは、0個以上の仮引数を持てます。
すべての仮引数は明示的に型を指定する必要があり、仮引数には型推論がありません。
同様に、戻り値の型も明示する必要があります。
メソッドから値を返すには、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では、2種類のコメントが書けます。
単一行コメントは//で始まり、複数行コメントは/*と*/の間に書きます。
この演習では、お気に入りの料理本から最高のラザニアを作るためのコードを書いていきます。
ラザニアの調理にかかる時間に関する、4つのタスクがあります。
expectedMinutesInOven()メソッドを定義しましょう。このメソッドは入力を受け取らず、ラザニアをオーブンに入れておくべき時間を分で返します。料理本によると、オーブンでの想定加熱時間は40分です。
Lasagna lasagna = new Lasagna();
lasagna.expectedMinutesInOven();
// => 40
remainingMinutesInOven()メソッドを定義しましょう。このメソッドは、ラザニアを実際にオーブンに入れておいた時間を分で入力として受け取り、前のタスクで求めた想定加熱時間をもとに、ラザニアをあと何分オーブンに入れておく必要があるかを返します。
Lasagna lasagna = new Lasagna();
lasagna.remainingMinutesInOven(30);
// => 10
preparationTimeInMinutes()メソッドを定義しましょう。このメソッドは、ラザニアに重ねた層の数を入力として受け取り、ラザニアの準備にかかった時間を分で返します。1層あたり2分かかるものとします。
Lasagna lasagna = new Lasagna();
lasagna.preparationTimeInMinutes(2);
// => 4
totalTimeInMinutes()メソッドを定義しましょう。このメソッドは2つの入力を受け取ります。1つ目は、ラザニアに重ねた層の数です。2つ目は、ラザニアをオーブンに入れておいた時間を分で表したものです。この関数は、ラザニアの調理にかかった合計時間を分で返します。合計時間は、準備にかかった時間と、その時点でラザニアがオーブンに入っていた時間を足したものです。
Lasagna lasagna = new Lasagna();
lasagna.totalTimeInMinutes(3, 20);
// => 26