リターンステートメントは特定の方法で使用されていることを知っています。 1つは関数の実行結果を返すために使用され、もう1つはvoid型の返品値を持つ関数で使用されます。それは単なる返品声明です(返品;)。現時点では、メソッドの実行を終了するために使用されます。つまり、この返品後の声明は実行されません。もちろん、この場合、返された声明の後、他の声明はもうありません。
Try-Catchally Statementでreturn Statementを使用していくつかの質問に遭遇しました
コード1:
static int intc(){int x = 0; try {x = 1; return x;}最後に{x = 3; }}コード2:上記のコードの最終的なステートメントに戻りステートメントを追加する
static int intc(){int x = 0; try {x = 1; return x;}最後に{x = 3; return x;}}}コード3:
static int intc(){int x = 0; try {x = 1; return x;}最後に{x = 3; return 0;}}}では、これら3つの方法の実行結果は何ですか?
コード1:返す1;
コード2:3を返します。
コード3:0を返します。
原則は何ですか?
その理由は、Java仮想マシンが戻り値を持つメソッドを実行すると、メソッドの返品値を保存するためにローカル変数リストに領域を作成するためです。 Return Statementを実行すると、この領域の値が返されます。
コード1では、tryで変数xに1を割り当て、変数xの値を返品値が保存されている領域にコピーします。最後に、Return Valueエリアは1を保存し、1つは返品ステートメントが実行されると返されます。
コード2では、1が変数xに割り当てられ、xの値が返品値が保存されている領域にコピーされます。この時点で、返品値が1であるエリアの値は、最終的にステートメントにジャンプします。この時点で、3はローカル変数xに割り当てられ、xの値を返品値が保存されている領域にコピーし、最終的に返品ステートメントを実行します。返された領域の値は3です。
コード3では、tryで実行されたステートメントは同じです。最終的にステートメントにジャンプした後、3はローカル変数に割り当てられ、0が返品値が保存されている領域に割り当てられ、最終的に返品ステートメントが実行されます。返された領域の読み取り値の値は0であるため、0が返されます。