【11章】Javaを学ぼう


今回の記事では、戻り値を中心に書いていきたいと思います。私自身のアウトプットの場になりますので、よろしくお願いいたします!

戻り値

メソッドの処理結果を、メソッドの呼び出し元で使いたい場合があります。このようなときは、メソッドが戻り値を返すようにします。

メソッドの戻り値

メソッドの中でreturnを使うと、returnの値をメソッドの呼び出し元に返すことができます。また、戻り値があるメソッドは、戻り値のデータ型を指定します。「public static void」のvoidの部分で指定します。

Main.java
public static 戻り値のデータ型 メソッド名(引数) {                 
  return 戻り値;    //呼び出し元にデータを返す
}
Main.java
public static int add(int x, int y) {                 
  return x + y;    //x + yが戻り値
}

上図のaddメソッドは、戻り値が整数なので「public static int ...」となります。
それではもう少し具体例に触れていきたいと思います。

Main.java
class Main {
 public static void main(String[] args) {       
  int total = add(8, 4);   //add(8, 4)は12
  System.out.println(total);                                      
 }
 public static int add(int x, int y) {     
  return x + y;     //8+4の結果が戻り値になる
 }
}

出力結果↓

コンソール
12

補足ですが、voidは戻り値がない、という意味になります。戻り値のない(returnがない)メソッドには、voidを指定します。

また、下図のように同名のメソッドは原則として定義できません。同じメソッドが複数存在すると、メソッドを呼び出したときにどのメソッドを用いればいいのか、コンピュータがわからなくなってしまうためです。

Main.java
class Main {
 public static void main(String[] args) {       
  hello();   //エラーになる                                      
 }
 public static void hello() {     
  System.out.println("こんにちは");
 }                                 //同名のメソッド(hello())
 public static void hello() {     
  System.out.println("Hello");
 }
}

ただし、引数の型や個数が違う場合は同名のメソッドを定義できます。同名のメソッドがあっても、引数が違えばどれを呼べばいいのかコンピュータが判断できるためです。
同名のメソッドを定義することをオーバーロードと言います。

Main.java
class Main {
 public static void main(String[] args) {       
  hello();        //引数がないhelloメソッド
  hello("Mia");   //String型の引数を持つhelloメソッド                                  
 }
 public static void hello() {     
  System.out.println("こんにちは");
 }                               
 public static void hello(String name) {     
  System.out.println("こんにちは" + name + "さん");
 }
}

出力結果↓

コンソール
こんにちは
こんにちはMiaさん

メソッドを組み合わせる

メソッドは、mainメソッド以外のメソッドから呼び出すことも可能です。
メソッドから他のメソッドを呼び出してみます。

Main.java
class Main {
 public static void main(String[] args) {       
  System.out.println(average(3, 8));                                      
 }
 public static double average(int x, int y) { 
  int total = add(x, y);
  return(double)total / 2;
 }
 public static int add(int x, int y) {
  return x + y;   
 }
}

averageメソッドは平均を求めるメソッドです。aとbの平均は「(a + b) / 2」で求められますが、足し算の部分はaddメソッドを利用しています。

真偽値の戻り値

真偽値のデータ型はbooleanなので、メソッド定義は下図のようになります。

Main.java
public static boolean isEven(int x) {                 
  return x % 2 == 0;  //偶数であればtrue
}

isEvenメソッドは引数の値が偶数かどうかを調べ、偶数であればtrue、奇数であればfalseを返します。
isEvenメソッドをもう少し具体的に利用してみます。

Main.java
class Main {
 public static void main(String[] args) {  
  int number = 7;
  if(isEven(number)) {    
   System.out.println(number + "は偶数です");                                      
  } else {
   System.out.println(number + "は奇数です");
  }
 }
 public static boolean isEven(int x) { 
  return x % 2 == 0;
 }
}

出力結果↓

コンソール
7は奇数です

以上が戻り値を中心とした説明になります。次章ではクラスについて詳しく書いていきたいと思います。
よろしければご覧になってください!
最後までご覧いただきまして、ありがとうございました!