return
日本語 | 戻る |
英語 | return |
ふりがな | りたーん |
フリガナ | リターン |
メソッドを終了する予約語。
ステートメントの一種。
「return 戻り値;」と書くことで、戻り値を返しつつメソッドを終了することができる。また、戻り値の型がvoidの場合には「return;」と書くことでメソッドを終了することができる。
戻り値の型がvoid以外メソッドは必ず値を返さなければならないため、そのメソッドは必ずreturnで値を返して終了する必要がある。
returnでメソッドを終了すると、メソッド内のそれ以降の処理は行われない。
ただし、特別にfinallyだけはreturn後も処理される。
ステートメントの一種。
「return 戻り値;」と書くことで、戻り値を返しつつメソッドを終了することができる。また、戻り値の型がvoidの場合には「return;」と書くことでメソッドを終了することができる。
戻り値の型がvoid以外メソッドは必ず値を返さなければならないため、そのメソッドは必ずreturnで値を返して終了する必要がある。
returnでメソッドを終了すると、メソッド内のそれ以降の処理は行われない。
ただし、特別にfinallyだけはreturn後も処理される。
参考サイト
- (参考サイトはありません)
// Sample.java
public class Sample
{
public static void main( String[] args )
{
Sample sample = new Sample();
// notReturn()メソッドを呼び出します。
sample.notReturn();
// Sample#notReturn()
// returnInt()メソッドを呼び出します。
// returnに渡された値は戻り値として返されるので
// 呼び出し元で受け取ることができます。
int result = sample.returnInt();
System.out.println( result );
// 100
// ifReturn()メソッドを呼び出します。
result = sample.ifReturn();
System.out.println( result );
// 200
}
/**
* 戻り値の型がvoidのメソッド。
*/
private void notReturn()
{
System.out.println( "Sample#notReturn()" );
// 戻り値を渡さずにreturnでメソッドを終了させます。
return;
// 戻り値を無理矢理返そうとするとコンパイルエラーになります。
// ※コンパイルエラーの例
// return 100;
// ※エラーメッセージ
// void メソッドは値を戻すことができません。
// ※コンパイルエラーの例ここまで
}
/**
* 戻り値の型がintのメソッド。
*/
private int returnInt()
{
// int型の値を返しつつメソッドを終了させます。
return 100;
// このメソッドは戻り値の型がvoidではないので、
// returnで戻り値を返さないとコンパイルエラーになります。
// ※コンパイルエラーの例
// (上の「return 100;」を削除した場合)
// ※エラーメッセージ
// このメソッドは型 int の結果を戻す必要があります。
// ※コンパイルエラーの例ここまで
}
/**
* 状況によってreturnが変わるメソッド。
*/
private int ifReturn()
{
// 一応のフラグ。
boolean b = true;
if( b )
{
// bにはtrueが入っているのでこちらに来ます。
return 200;
// ここでメソッドが終了したので、これ以降の処理は
// 行われません。ブロックのネストの深さも関係ありません。
// (ただし、finallyだけは通ります)。
// 絶対に処理されない箇所に、何か処理が書かれていると
// コンパイルエラーになります。
// ※コンパイルエラーの例
// System.out.println( "Sample#ifReturn()" );
// ※エラーメッセージ
// 到達不能コード
// ※コンパイルエラーの例ここまで
}
// bにはtrueが格納されているので、こちらには絶対来ません。
// ただし、コンパイラは「bには必ずtrueが入っている」と
// 判断できないので、上記のようなコンパイルエラーは
// 発生しません。
System.out.println( "Sample#ifReturn()" );
// そして、コンパイラは「ここに来る可能性がある」と
// 判断するため、必ずreturnで値を返す必要があります。
return 300;
// ※コンパイルエラーの例
// (上の「return 300;」を削除した場合)
// ※エラーメッセージ
// このメソッドは型 int の結果を戻す必要があります。
// ※コンパイルエラーの例ここまで
}
}
public class Sample
{
public static void main( String[] args )
{
Sample sample = new Sample();
// notReturn()メソッドを呼び出します。
sample.notReturn();
// Sample#notReturn()
// returnInt()メソッドを呼び出します。
// returnに渡された値は戻り値として返されるので
// 呼び出し元で受け取ることができます。
int result = sample.returnInt();
System.out.println( result );
// 100
// ifReturn()メソッドを呼び出します。
result = sample.ifReturn();
System.out.println( result );
// 200
}
/**
* 戻り値の型がvoidのメソッド。
*/
private void notReturn()
{
System.out.println( "Sample#notReturn()" );
// 戻り値を渡さずにreturnでメソッドを終了させます。
return;
// 戻り値を無理矢理返そうとするとコンパイルエラーになります。
// ※コンパイルエラーの例
// return 100;
// ※エラーメッセージ
// void メソッドは値を戻すことができません。
// ※コンパイルエラーの例ここまで
}
/**
* 戻り値の型がintのメソッド。
*/
private int returnInt()
{
// int型の値を返しつつメソッドを終了させます。
return 100;
// このメソッドは戻り値の型がvoidではないので、
// returnで戻り値を返さないとコンパイルエラーになります。
// ※コンパイルエラーの例
// (上の「return 100;」を削除した場合)
// ※エラーメッセージ
// このメソッドは型 int の結果を戻す必要があります。
// ※コンパイルエラーの例ここまで
}
/**
* 状況によってreturnが変わるメソッド。
*/
private int ifReturn()
{
// 一応のフラグ。
boolean b = true;
if( b )
{
// bにはtrueが入っているのでこちらに来ます。
return 200;
// ここでメソッドが終了したので、これ以降の処理は
// 行われません。ブロックのネストの深さも関係ありません。
// (ただし、finallyだけは通ります)。
// 絶対に処理されない箇所に、何か処理が書かれていると
// コンパイルエラーになります。
// ※コンパイルエラーの例
// System.out.println( "Sample#ifReturn()" );
// ※エラーメッセージ
// 到達不能コード
// ※コンパイルエラーの例ここまで
}
// bにはtrueが格納されているので、こちらには絶対来ません。
// ただし、コンパイラは「bには必ずtrueが入っている」と
// 判断できないので、上記のようなコンパイルエラーは
// 発生しません。
System.out.println( "Sample#ifReturn()" );
// そして、コンパイラは「ここに来る可能性がある」と
// 判断するため、必ずreturnで値を返す必要があります。
return 300;
// ※コンパイルエラーの例
// (上の「return 300;」を削除した場合)
// ※エラーメッセージ
// このメソッドは型 int の結果を戻す必要があります。
// ※コンパイルエラーの例ここまで
}
}
// Sample.java public class Sample { public static void main( String[] args ) { Sample sample = new Sample(); // notReturn()メソッドを呼び出します。 sample.notReturn(); // Sample#notReturn() // returnInt()メソッドを呼び出します。 // returnに渡された値は戻り値として返されるので // 呼び出し元で受け取ることができます。 int result = sample.returnInt(); System.out.println( result ); // 100 // ifReturn()メソッドを呼び出します。 result = sample.ifReturn(); System.out.println( result ); // 200 } /** * 戻り値の型がvoidのメソッド。 */ private void notReturn() { System.out.println( "Sample#notReturn()" ); // 戻り値を渡さずにreturnでメソッドを終了させます。 return; // 戻り値を無理矢理返そうとするとコンパイルエラーになります。 // ※コンパイルエラーの例 // return 100; // ※エラーメッセージ // void メソッドは値を戻すことができません。 // ※コンパイルエラーの例ここまで } /** * 戻り値の型がintのメソッド。 */ private int returnInt() { // int型の値を返しつつメソッドを終了させます。 return 100; // このメソッドは戻り値の型がvoidではないので、 // returnで戻り値を返さないとコンパイルエラーになります。 // ※コンパイルエラーの例 // (上の「return 100;」を削除した場合) // ※エラーメッセージ // このメソッドは型 int の結果を戻す必要があります。 // ※コンパイルエラーの例ここまで } /** * 状況によってreturnが変わるメソッド。 */ private int ifReturn() { // 一応のフラグ。 boolean b = true; if( b ) { // bにはtrueが入っているのでこちらに来ます。 return 200; // ここでメソッドが終了したので、これ以降の処理は // 行われません。ブロックのネストの深さも関係ありません。 // (ただし、finallyだけは通ります)。 // 絶対に処理されない箇所に、何か処理が書かれていると // コンパイルエラーになります。 // ※コンパイルエラーの例 // System.out.println( "Sample#ifReturn()" ); // ※エラーメッセージ // 到達不能コード // ※コンパイルエラーの例ここまで } // bにはtrueが格納されているので、こちらには絶対来ません。 // ただし、コンパイラは「bには必ずtrueが入っている」と // 判断できないので、上記のようなコンパイルエラーは // 発生しません。 System.out.println( "Sample#ifReturn()" ); // そして、コンパイラは「ここに来る可能性がある」と // 判断するため、必ずreturnで値を返す必要があります。 return 300; // ※コンパイルエラーの例 // (上の「return 300;」を削除した場合) // ※エラーメッセージ // このメソッドは型 int の結果を戻す必要があります。 // ※コンパイルエラーの例ここまで } }
「解説」に含まれているページ
「サンプルプログラムとか」に含まれているページ
- &&演算子
- &=演算子
- &演算子
- /**
- 0x
- 10進数
- 16進数
- 8進数
- <<=演算子
- <jsp:useBean>
- >>=演算子
- >>>=演算子
- @return
- ^=演算子
- ^演算子
- ArrayList
- boolean
- C++言語
- clone
- Cloneable
- CloneNotSupportedException
- Comparable
- Comparator
- compareTo
- C言語
- doステートメント
- equals
- FilterInputStream
- FilterReader
- finally
- for
- forステートメント
- getter
- getter/setter
- HashMap
- HttpServletRequest
- InputStream
- Iterable<T>
- JavaBeans
- Javadoc
- javadoc
- JSP暗黙オブジェクト「request」
- JSP暗黙オブジェクト「session」
- JUnit
- native
- ObjectInputStream
- ObjectOutputStream
- private
- privateフィールド
- protectedフィールド
- Reader
- return
- Serializable
- setter
- synchronizedブロック
- TestCase
- throw
- toString
- transient
- void
- while
- whileステートメント
- |=演算子
- ||演算子
- |演算子
- ~演算子
- アクセサー
- アサーション
- インスタンス初期化子
- イントロスペクション
- エラーハンドラ
- カスタムタグライブラリ
- カプセル化
- クラス
- コンポジション
- サニタイジング
- シグネチャー
- ショートサーキット
- ショートサーキット演算子
- ジェネリッククラス
- セッションスコープ
- ソート
- テストファースト
- ドキュメンテーションコメント
- バイト入力ストリーム
- バイト出力ストリーム
- ビットフラグ
- フィールド
- フィールド宣言
- ブロックします
- マージ
- マージソート
- メソッド
- リクエストスコープ
- ローカル変数
- 再帰呼び出し
- 同期
- 契約による設計
- 委譲
- 安定ソート
- 戻り値
- 抜ける
- 排他
- 木構造
- 桁溢れ
- 浅いコピー
- 深いコピー
- 直列化
- 降順
- 隠蔽
- 集約