7

これはおそらく答えるのがかなり簡単な質問ですが、しばらくの間私を悩ませてきました.

if ステートメント内、メソッド内 (Java 言語) に return ステートメントがある場合、キャッチオールとして最後に別のステートメントを追加し、エラーを回避するために、両方の戻り値が、 if ステートメントが true の場合は other?

例:

public int getNumber() {
 if( 5 > number) {
 return 5;
 }
 return 0;
 }

結果: メソッドは 5 を返し、スタック ロジックを介して、その後すぐに 0 を返します。

または、次のように外部変数を使用する必要がありますか?

int num = 1;
public int getNumber() {
 if( 5 > number) {
 num = 5;
 }
 return num;
 }

結果: メソッドは変数 num を 5 に変更し、num が返されて使用されます。この場合、変数の使い方によってはreturn文は必ずしも必要ではないと思います。

前もって感謝します。

4

2 に答える 2

7

いいえ、両方の値は返されません。ステートメントはそのreturn場でメソッドの実行を停止し、その値を返します。実際、 がreturn原因で到達できないことをコンパイラが認識しているコードが の後にある場合、エラーが発生returnします。

if最後に変数を返すために、外部で変数を使用する必要はありません。returnただし、メソッドが長く複雑な場合、この手法は 1 つのステートメントしか使用されないため、読みやすさと明確さに役立ちます。

于 2013-08-16T22:13:06.573 に答える
1

最初にヒットした return ステートメントのみが使用されます。その後、メソッドは終了します。

複数の return ステートメントを読むのが難しいという理由で難色を示すコード規則がいくつかありますが、私はその 1 つではありません。:)

于 2013-08-16T22:12:47.340 に答える