2013-11-20 67 views
0

我應該返回一個字符的方法:方法,返回CHAR返回0

public char Connect(parameters){ 
    for (char c : something){ 
     if (condition){ 
      return c; 
     } 
    } 

由於我沒有在循環後返回,Netbeans的在添加了

return 0; 

方法結束。爲什麼?爲什麼它不是一個錯誤?

+0

char是一個數字 – Cruncher

回答

0

默認值char類型爲'\u0000',其十進制等效值爲0。見JLS §4.12.5。因此,如果for循環中的條件永遠不會滿足,則該方法將返回默認值。

爲什麼它不是錯誤?

它不應該是一個錯誤。隱含narrowing conversion這裏從intchar類型。

0

這是因爲控制流可能沒有達到if塊。如果發生這種情況,您的代碼不會指定要返回的內容。這就是爲什麼Netbeans爲你添加return 0

讓我們假設表達condition從來都不是真的,那麼

public char Connect(parameters){ 
    for (char c : something){ 
     if (condition){ 
      return c; 
     } 
    } 

該方案將完成循環,達到方法的結束,但仍然不會有什麼回報。因此,您可以將return 0視爲「默認」返回語句。

0

想象一下,你的狀況永遠不會滿足。在這種情況下,如果您沒有return聲明,應該返回什麼?

您的情況下的return 0;是條件未滿足時的默認值。

0

由於我沒有在循環後返回,Netbeans的加入

返回0;

在方法結束時。爲什麼?爲什麼它不是一個錯誤?

聲明具有return類型的方法無法正常結束。它必須return一個值通過任何明確的條件。如果您的for循環條件爲false(無法在編譯時評估),我們不能指望它從循環體返回。

這就是netbean爲你設置的原因:0char的默認值和char返回類型的方法的有效返回值。

0

Netbeans(可能)將其添加爲默認返回值。如果你有Netbeans自動生成方法,這很有可能。

這不是錯誤,因爲0可以正確轉換爲字符。請參閱asciitable。com,你會發現字符0是一個有效的字符(NUL)。