バナー画像

Javaを最初に勉強する時、ほとんどの人は次のような「Hello World」プログラムから始めたのではないでしょうか?

public static void main( String[] args ) 
{
    System.out.println( "Hello World" );
}

メソッドの戻り値に指定されているvoidの意味などは、最初は気にしていなかったかもしれませんが、Javaを学習する上でvoidの理解は必須です。

この記事では、Javaのvoidについての解説や、メソッドの定義方法などについて解説していきます。

voidとは?

Javaでメソッドを定義するときは、メソッド名・引数・戻り値の3つを指定して宣言をします。この時、メソッドの戻り値の型にvoidを指定すると、そのメソッドは値を返さないメソッドとして定義されます。

voidとは「何もない」という意味で、Javaではメソッドの戻り値のみに指定できる特別な型として存在します。戻り値がvoidとして宣言されたメソッドは、return時には何も値をかえしません。(逆にreturn時に値を戻すとコンパイルエラーとなる)

戻り値がないメソッド(voidメソッド)

このように、voidは戻り値がないメソッドで指定する特別な型です。戻り値がvoidで宣言されたメソッドは、メソッド内で必要な処理を行い、戻り値を変えささずにメソッドを抜けるのが基本的な実装です。

public void voidMethod() {
    System.out.println("戻り値がないvoidメソッド");
}

returnキーワードでメソッドを抜けることも可能で、その時はreturnのみを指定し、戻り値は指定しません。この時にreturnには戻り値は指定しません。

public void voidMethod() {
    System.out.println("戻り値がないvoidメソッド");
    return;
}

voidで戻り値がないメソッドとして宣言されている場合は、returnで戻り値を返す処理を書いてしまうとコンパイル時にエラーとなります。

public void voidMethod() {
    System.out.println("戻り値がないvoidメソッド");
    return 123;   //error: incompatible types: unexpected return value
}

voidメソッドの呼び出し

先述したように、voidは戻り値がないメソッドであるため、voidメソッドを呼び出す場合は、次のサンプルコードのように戻り値の変数を指定せず、メソッドの呼び出しを行います。

public class Main {
    public static void main(String[] args) {
        //voidメソッドの呼び出し
        voidMethod(1, 2); 

        //戻り値があるメソッドは、戻り値を受け取る変数を指定する
          int result = intReturnMethod(1, 2);
    }

    // voidメソッド
    public static void voidMethod(int args1, int args2) {
        System.out.printf("voidメソッド args1=%d, args2=%d", args1, args2);
    }

    // intの値を返すメソッド
    public static void intReturnMethod(int args1, int args2) {
        return args1 + args2;
    }
}

void以外のメソッド(戻り値があるメソッド)

戻り値がないvoidメソッドの作り方について解説してきましたが、今度は、戻り値があるメソッドの定義方法を見ていきましょう。

戻り値があるメソッドは、次の構文の通り、メソッド名の前に戻り値の型を指定します。

public 戻り値の型 myMethod(引数) {
  //メソッド内の処理
}

実際にいくつか戻りの宣言を行ったメソッドを作ってみましょう。

次のサンプルコードはintの値を返すメソッドです。戻り値の型をintに指定し、メソッド内のreturnintの値を戻します。

public int intMethod() {
    return 100;   // 100を呼び出し元の処理に返す
}

戻り値の型を指定しるにもかかわらず、メソッド内の処理でreturnで値を戻していない場合は、コンパイル時にエラーになります。

public int intMethod() {
    System.out.println("intMethodメソッドの処理");
    //returnで値を返さずにメソッド内の処理を終了
}
コンパイル結果
-------------------
Main.java: error: missing return statement  

分岐がある時のreturn時の注意点

戻り値が定義されたメソッドで、処理内部にifなどの分岐がある場合、すべての条件分岐で値をreturnする必要があります。もし、一部の分岐だけ値を返すreturnが抜けている場合、returnを指定しなかった時と同じコンパイルエラーが発生します。

次のサンプルコードは、引数で渡されたscoreの値を点数ごとに評価した文字列を返すメソッドです。scoreの値が50点以上の場合はreturnで結果を返していますが、50点未満の場合はどの分岐にも入らず値が戻されなくなるため、このコードはコンパイルエラーになります。

public String evaluation(int score) {
    if (score == 100) {
        return "満点です";
    } else if (score >= 70) {
        return "よくできました";
    } else if (score >= 50) {
        return "あと一歩";
    }
}
コンパイル結果
-------------------
Main.java: error: missing return statement  

コンパイルエラーにならないためには、どの条件分岐を辿ったとしても値が戻されるようにコードを修正する必要があります。

public String evaluation(int score) {
    if (score == 100) {
        return "満点です";
    } else if (score >= 70) {
        return "よくできました";
    } else if (score >= 50) {
        return "あと一歩";
    }
    return "もっと頑張りましょう";
}

まとめ

javaのvoidは、戻り値がないメソッドを表す特別な型であることや、戻り値があるメソッドの定義方法や注意点について解説してきました。

voidは、Javaのみならず、C++やC#などの言語でも使用されるキーワードで、基本的にはJavaと同じような用途で使用するため是非voidキーワードについて理解を深めておきましょう。

この記事のまとめ
  • voidは戻り値がないメソッドを宣言するときに、戻り値の型として指定する
  • voidで定義されたメソッドで戻り値を返そうとするとコンパイルエラーになる
  • intStringなどの戻り値があるメソッドは、メソッド内で必ず戻り値を返す必要がある

リストで記述すると上記のように表示されます。

【関連記事】
【Java】アクセス修飾子privateの使い方【クラス・メソッド・フィールド

エンジニアになりたい人に選ばれるプログラミングスクール「ポテパンキャンプ 」

ポテパンキャンプは卒業生の多くがWebエンジニアとして活躍している実践型プログラミングスクールです。 1000名以上が受講しており、その多くが上場企業、ベンチャー企業のWebエンジニアとして活躍しています。

基礎的な学習だけで満足せず、実際にプログラミングを覚えて実践で使えるレベルまで学習したいという方に人気です。 プログラミングを学習し実践で使うには様々な要素が必要です。

それがマルっと詰まっているポテパンキャンプでプログラミングを学習してみませんか?

卒業生の多くがWebエンジニアとして活躍

卒業生の多くがWeb企業で活躍しております。
実践的なカリキュラムをこなしているからこそ現場でも戦力となっております。
活躍する卒業生のインタビューもございますので是非御覧ください。

経験豊富なエンジニア陣が直接指導

実践的なカリキュラムと経験豊富なエンジニアが直接指導にあたります。
有名企業のエンジニアも多数在籍し品質高いWebアプリケーションを作れるようサポートします。

満足度高くコスパの高いプログラミングスクール「ポテパンキャンプ」

運営する株式会社ポテパンは10,000人以上のエンジニアのキャリアサポートを行ってきております。
そのノウハウを活かして実践的なカリキュラムを随時アップデートしております。

代表の宮崎もプログラミングを覚えサイトを作りポテパンを創業しました。
本気でプログラミングを身につけたいという方にコスパ良く受講していただきたいと思っておりますので、気になる方はぜひスクール詳細をのぞいてくださいませ。