web-dev-qa-db-ja.com

javaではvoidは何をしますか?

戻り値の型-メソッドによって返される値のデータ型、またはメソッドが値を返さない場合はvoid。

http://download.Oracle.com/javase/tutorial/Java/javaOO/methods.html

さて、それでは..ここに私の質問があります:

public class EnumTest {
    Day day;

    public EnumTest(Day day) {
        this.day = day;
    }

    public void tellItLikeItIs() {
        switch (day) {
            case MONDAY: System.out.println("Mondays are bad.");
                         break;

            case FRIDAY: System.out.println("Fridays are better.");
                         break;

            case SATURDAY:
            case SUNDAY: System.out.println("Weekends are best.");
                         break;

            default:     System.out.println("Midweek days are so-so.");
                         break;
        }
    }

    public static void main(String[] args) {
        EnumTest firstDay = new EnumTest(Day.MONDAY);
        firstDay.tellItLikeItIs();
        EnumTest thirdDay = new EnumTest(Day.WEDNESDAY);
        thirdDay.tellItLikeItIs();
        EnumTest fifthDay = new EnumTest(Day.FRIDAY);
        fifthDay.tellItLikeItIs();
        EnumTest sixthDay = new EnumTest(Day.SATURDAY);
        sixthDay.tellItLikeItIs();
        EnumTest seventhDay = new EnumTest(Day.SUNDAY);
        seventhDay.tellItLikeItIs();


    }
}

http://download.Oracle.com/javase/tutorial/Java/javaOO/enum.html

上記のコードは無効でなければ機能しません。

Exception in thread "main" Java.lang.Error: Unresolved compilation problems: 
    The method tellItLikeItIs() is undefined for the type EnumTest

私は何を逃しましたか?なぜそこにボイドがあるのですか?そして、それは文字列を返しますか?

8
Alice

voidなしではコードが機能しない理由は、System.out.println(String string)メソッドが何も返さず、指定された引数を標準出力端末(ほとんどの場合コンピューターモニター)に出力するためです。メソッドが「何も」を返さない場合、署名にvoidキーワードを挿入して指定する必要があります。

System.out.printlnのドキュメントは次の場所にあります。

http://download.Oracle.com/javase/6/docs/api/Java/io/PrintStream.html#println%28Java.lang.String%29

問題をさらに推し進めるため、printlnは、「副作用」として計算を実行する方法の典型的な例です。

9
Dhruv

tellItLikeItIsメソッドのことですか?はい、メソッドdoes n'tが何も返さないことを指定するには、voidを指定する必要があります。すべてのメソッドhaveは、voidであっても戻り値の型を指定します。

それは確かに文字列を返しません-見て、どこにもreturnステートメントはありません。あなたがそれを考える理由は本当に明確ではありませんis文字列を返します。 printingコンソールへの文字列ですが、それはメソッドから文字列を返すこととは異なります。

14
Jon Skeet

無効:型修飾子voidは、mainメソッドが値を返さないことを示します。メソッドへのすべてのパラメーターは、括弧の前で宣言されます。ここで、String args []は、クラスタイプstringのオブジェクトの配列を含むargsという名前のパラメーターを宣言します。

0
KABEZA J.paul

Voidは何も返しません。メソッドに戻り値がないことをコンパイラに伝えます。

0
Dave Newton

voidは、何も返さないことを意味します。文字列を返しません。System.outに文字列を書き込みますが、返しません。

何も返さないと言っているだけでも、メソッドが返すものを指定する必要があります。

技術的に言えば、戻り値の型を記述しない場合は何も返さないと想定されるように言語を設計できたかもしれませんが、voidを明示的に記述することで、戻り値がないことを意図的に保証できます偶然ではありません。

0
Davy8

戻り値の型がvoidの場合、メソッドは何も返しません。

コードをもう一度見てください。そのメソッドには戻り値はありません。コンソールに印刷して終了します。

0
duffymo