2011-09-09 5 views
8

戻り値の型 - メソッドによって返された値のデータ型。または、メソッドが値を返さない場合はvoid。Javaでは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 

私は何を欠場しましたか? なぜそこに空白がありますか? それは文字列を返しますか?

+0

Javaのすべてのメソッドは1つの戻り値の型でなければなりませんvoid特定のメソッドが何も返さないことをVMに通知します –

+0

"null"彼らは "空"を使用したほうが好きでした(これは厄介なものですが、20年または30年間それを使用していないとしません)。 – corsiKa

+0

ここで「void」という単語を削除することはできません。言語の要件があります。ターンタイプ。あなたはどこかに書き留めなければなりません。それはメソッド名のすぐ前にあります。 –

答えて

9

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のは、「副作用として計算を行っている方法の典型的な例です。"

0

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

0

voidは何も返さないことを意味します。それは文字列を返しません、あなたはSystem.outに文字列を書きますが、あなたは1つを返していません。

メソッドが返すものを指定する必要があります。返すと言うだけでも、何も返されません。

技術的に言えば、返品タイプを書いていない場合は何も返さないと仮定しているが、明示的に書いてvoidを返すことで、返品された値が意図的でないことを保証することができます。偶然ではない。

+0

メソッドが何も返さないが、コンソール上に何かを表示すると、どう違うのですか? – Rudra

13

tellItLikeItIsの方法はありますか?はい、方法を返さないように指定するには、voidを指定する必要があります。 voidであっても、すべてのメソッドにはの戻り値が指定されています。

これは確かに文字列を返しません - 見て、どこにもreturn文はありません。 という文字列を返すとは、なぜそれほど明確ではないのですか?コンソールへのの印刷文字列ですが、それはメソッドからの文字列を返すのと同じではありません。

0

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

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

0

Void:type修飾子は、mainメソッドが値を返さないことを示します。メソッドのすべてのパラメータは、かっこの中で宣言されます。String args []はargsという名前のパラメータを宣言します。クラス型文字列のオブジェクト

関連する問題