Java③
メソッド
メソッドとは、何らかの処理を割り当てた部品。
メソッドの定義
public static void メソッド名() {
//実行する処理
}
public static void hello() {
system.out.pritnln("こんにちは");
}
メソッドはクラスの中に定義する。
class Main { //Mainクラスのブロック
public static void main(String[] args) {
hello(); //メソッドの呼び出し
}
//クラスの中にメソッドを定義
public static void hello() {
System.out.println("こんにちは");
}
} //Mainクラスのブロック
引数を使う
引数とは、メソッドに与える追加情報のようなもの。
メソッドに引数を渡すには、引数を受け取れるメソッドを定義しなければならない。メソッドの定義部分で引数を受け取るための箱となる変数(仮引数(かりひきすう))を指定する。
「public static void メソッド名()」の()に仮引数を指定します。仮引数は、変数定義と同様に、データ型を指定する必要がある。
public static void メソッド名(データ型 変数名) {
//実行する処理
}
public static void hello(String name) {
//実行する処理
}
メソッドに引数を渡すには、メソッド名(引数)としてメソッドを呼び出す。渡された引数はメソッドの仮引数で指定した変数に代入され、その変数はメソッドの処理の中で用いることができる。
class Main {
public static void main(String[] args) {
hello("太郎"); //メソッドの呼び出し
}
//仮引数nameを指定
public static void hello(String name) {
System.out.println(name + "さんこんにちは");
}
}
//「太郎さんこんにちは」が出力される
引数は複数渡すこともできる。メソッドが複数の引数を受け取るためには、仮引数をコンマ(,)で区切って定義し、引数は左から順番に「第1引数、第2引数・・・」というように呼ぶ。
class Main {
public static void main(String[] args) {
printPrice("ラーメン", 800);
}
public static void printPrice(String item, int price) {
System.out.println(item + "は" + price + "円です");
}
}
//「ラーメンは800円です」が出力される
仮引数は任意に順番を決められるが、メソッドを呼び出すときは仮引数の順番通りに引数を渡さなければなりません。
戻り値
メソッドの処理結果をメソッドの呼び出し元で使いたい場合、メソッドが戻り値(もどりち)を返すようにします。
メソッドを工場に例えてみると、工場(メソッド)は、発注者(mainメソッド)から材料(引数)を受け取り、決められた加工(処理)を行って完成品を発注者に返す。この完成品にあたるのが戻り値。
メソッドの中でreturnを使うと、returnの値をメソッドの呼び出し元に返すことができる。また、戻り値があるメソッドは、ここまで定型だった「public static void」のvoidの部分で戻り値のデータ型を指定しする。
public static 戻り値のデータ型 メソッド名(引数) {
return 戻り値;
}
public static int add(int x, int y) {
return x + y;
}
戻り値がある場合、メソッドの呼び出し部分がそのまま値に変わる。よってメソッドの呼び出し部分を、変数に代入することができます。
public static void main(String[] args) {
int total = add(2, 3) //①メソッドの呼び出し、③戻り値を代入
System.out.println(total); //④値を出力する
}
public static int add(int x, int y) {
return x + y //②戻り値を返す
}
//5が出力される
addメソッドが呼び出され、引数に2と3が渡される
2 + 3の結果が戻り値として返される
戻り値を変数totalに代入する
値を出力する
これまで定型だったvoidは「戻り値がない」という意味。戻り値のない(returnがない)メソッドには、voidを指定します。
メソッドのオーバーロード
同名のメソッドは原則として定義でない。同じメソッドが複数存在するとメソッドを呼び出したときにどのメソッドを用いればいいのかわからなくなってしまうため。
ただし、引数の型や個数が違う場合は同名のメソッドを定義でる。同名の引数が違えばどれを呼べばいいのか判断できる。このように同名のメソッドを定義することをオーバーロードと言います。
public static void main(String[] args) {
hello();
hello("太郎");
}
//仮引数なし
public static string hello() {
System.out.println("こんにちは");
}
//仮引数name
public static string hello(String name) {
System.out.println(name + "さんこんにちは");
}
メソッドを組み合わせる
メソッドから他のメソッドを呼び出す。
public static void main(String[] args) {
System.out.println(average(5, 6)); //①averageメソッドの呼び出し、⑥値を出力する
}
//averageメソッド
public static double average(int x, int y) {
int total = add(x, y); //②addメソッドの呼び出し、④変数totalに戻り値を代入
return (double)total / 2; //⑤戻り値を返す
}
//addメソッド
public static int add(int x, int y) {
return x + y; //③戻り値を返す
}
//5.5が出力される
averageメソッドを呼び出し、引数に5と6を渡す
仮引数で5と6を受け取り、addメソッドを呼び出す
addメソッドで5と6を受け取りx + yの結果を戻り値として返す
戻り値を変数totalに代入し
(double)total / 2の結果を戻り値として返す
値を出力する
真偽値を返す
public static boolean isEven(int a) {
return a % 2 == 0;
}
//aを2で割ったあまりが0ならtrueを返す
public static void main(String[] args) {
int number = 3
if (isEven(number)) {
System.out.println(number + "は偶数です");
} else {
System.out.println(number + "は奇数です");
}
public static boolean isEven(int a) {
return a % 2 == 0;
}
//「3は奇数です」が出力される