2011-09-09 65 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中的所有方法必須是一個返回類型void向虛擬機告訴特定的方法不會返回任何東西 –

+0

他們選擇了void因爲它與「null」交手。他們會更喜歡他們使用「空」(這聽起來很尷尬,但如果我們已經使用了它20或30年,就不會這麼做)。 – corsiKa

+0

你不能在這裏刪除'void'這個詞,因爲這就是結構語言要求。方法的定義期望你指定re轉身式;你*有*寫在某個地方。這只是方法名稱的前面。 –

回答

9

如果沒有void,代碼將無法正常工作的原因是因爲System.out.println(String string)方法不會返回任何內容,只是將提供的參數輸出到標準輸出終端,這是大多數情況下的計算機監視器。當一個方法返回「Nothing」時,您必須指定void關鍵字作爲其簽名。

你可以看到的System.out.println,這裏的文檔:

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

爲了進一步按問題的println是作爲一個「副作用執行計算的方法的一個典型的例子。「

0

Void不返回任何東西;它告訴編譯器該方法沒有返回值。

0

void表示它什麼都沒有返回。它不返回一個字符串,你寫一個字符串到System.out,但你沒有返回一個。

您必須指定某個方法返回的內容,即使您只是說它不返回任何內容。

從技術上講,他們可能已經設計了這樣的語言,如果你不寫返回類型,那麼它被假定爲不返回任何東西,但是使你明確寫出void有助於確保缺少返回值是有意的,不是偶然的。

+0

當你說,一個方法不會返回任何東西,但它在控制檯上打印某些東西時它有什麼不同 – Rudra

13

您的意思是tellItLikeItIs方法?是的,您必須指定void來指定方法不會返回任何內容。所有方法都有具有指定的返回類型,即使它是void

它肯定不會返回一個字符串 - 看,任何地方都沒有返回語句。這不是很清楚爲什麼你認爲它返回一個字符串。它是字符串打印到控制檯,但這不同於從方法中返回一個字符串。

0

當返回類型爲void時,您的方法不會返回任何內容。

再次看看你的代碼:這種方法沒有任何回報。您打印到控制檯並退出。

0

Void:類型修飾符void聲明瞭main方法不返回任何值,方法的所有參數都在括號之前的地方被聲明瞭,這裏String args []聲明瞭一個名爲args的參數,它包含一個數組類型字符串的對象