2011-01-31 24 views
3

除了在一個方法/構造函數體?在Java中,返回語句的顯示位置在哪裏?

另外,有什麼可以通過構造函數返回?或者我可以只使用「return;」而沒有任何表達式跟在它後面?

+0

你正在做什麼?你在問一些奇怪的「語言法律」問題,這讓我很好奇:-) – Pointy 2011-01-31 19:21:58

+0

由於前些天我誤解了一個人,我不會因爲接受另一個問題而感到厭煩。 :) – biziclop 2011-01-31 19:29:36

+0

只是試驗語言。看看什麼是和什麼是不可能的。 :) – 2011-01-31 19:30:42

回答

7

在Java中,哪裏可以出現return語句?除了在一個方法/構造函數體?

只能在構造函數或方法:

JLS - http://java.sun.com/docs/books/jls/second_edition/html/statements.doc.html#6767

return語句將控制返回到的方法調用者(8.4節,§15.12)或構造函數(§ 8.8,§15.9)


此外,有沒有東西,可以通過構造函數返回?

沒有

JLS - http://java.sun.com/docs/books/jls/second_edition/html/statements.doc.html#6767

與表達必須包含在一個方法聲明聲明爲返回值的return語句(§8.4)或a發生編譯時錯誤。


或者我只能用 「迴歸」;沒有任何表達之後?

JLS - http://java.sun.com/docs/books/jls/second_edition/html/statements.doc.html#6767

不帶表達式的return語句必須在聲明的方法體使用關鍵字void包含,不返回任何值(§8.4),或在構造函數的主體中(§8.8)

0

您可以在返回類型爲void的方法中使用不帶值的返回值。在其他方法中,這是不可能的。

例如

public void test(String s) { 
     if (s.equals("")) { 
      return; 
     } 
    } 

構造函數不應該有其體內的return語句,因爲一個構造函數定義沒有返回類型。

編輯:正如喬恩Skeet指出,構造函數可以有沒有值的返回語句,但在大多數情況下,這是不使用。

4

return語句可以出現在方法或構造函數中。

返回值應該跟值的方法返回類型兼容。如果方法是void返回不返回任何東西。

構造函數完全沒有返回類型(根據定義)。因此,如果您將return語句寫入構造函數中,則不應該有任何值。

0

我不確定在哪裏可以使用返回語句(或者完全按照說明書的說法)。它們在方法中最常用於返回值(或者結束沒有返回值的方法)。

構造函數不能返回任何值。調用構造函數將讓虛擬機根據您創建的對象的大小分配內存,然後調用對象內的相應構造函數,這與調用方法的過程不同。 return語句可以被使用,但是沒有值可以從構造函數本身返回。

爲了從構造函數中「返回」信息(更合適的,指出構造過程中出現錯誤),可以使用異常。

0

我更喜歡在一個方法中只有一個return語句,而在構造函數中沒有return語句。相比之下,更多的縮進級別通常是一件微不足道的事情,可以從中獲得最佳實踐。它通常使代碼更具可讀性。如果我最終返回的值有一個局部變量,它通常使我可以將該變量聲明爲final,這樣我就可以絕對確定該變量只能被賦值一次。通常這會讓您對算法的實際複雜性有所瞭解。但是,我確實在方法中使用了幾個throws語句。此外,我更喜歡在設計方法開始時檢查前提條件並在javadoc中說明合同設計。