Javaでは、最終的には声明が含まれている場合は、最終的に実行されるかどうかは何ですか? ?次の例で説明しましょう。
最初のケース:TryにはReturn Statementが含まれており、最終的にそれが含まれていません。
Public Class Testtry {Static String s = ""; {system.out.println( ")ここでは、文字列sを定義し、「a」を試してみて、直接返して、最終的にsに「b」を割り当てます。以下は実行の結果です
試してください..... 17 b 8 a
最終結果はAであることがわかりましたが、BはAよりも優先されます。 Debug by Step Debuggingを通じて、TryでReturnを実行する前に、最終的にコードが実行され、Return Statementが実行されることがわかりました。戻り声明が最終的に含まれている場合、2番目の状況を見てみましょう。
2番目のケース:最後に、上記のコードをわずかに変更します。
Public Class Testtry {Static String s = ""; {system.out.println( "try ......");s = "b"を変更すると、どのような結果が発生しますか。文字列はaまたはbですか?
試してください..... 8 b
最終的な印刷結果はbであることがわかりました。
returnステートメントは、特定の方法で使用されていることがわかります。 、この時点での方法、つまり、この場合、この場合は実行されることはありません。
public static int print(){c ++を試してください(例外e){e.printstacktrace(); //---- 4} c; // ------ 2} //プログラムの実行の結果は次のとおりです。
走る:
実行してみてください...
最後に実行...
3
正常に構築された(合計時間:0秒)
位置2と3には1つの返品ステートメントしか存在できず、2、3、および4に1つの返品ステートメントが必要であることに注意してください。2が実行された場合、メソッドは終了し、3のステートメントは実行できません。
TRYステートメントブロックが1で実行されると、関数の戻り値は別の一時的な変数に保存されます(その値は102です)。別のステートメントブロックは2で発生し、戻り値は一時的な変数に保存されます(値は3)。
public static int print {int c = 1; -1}最後に{c ++;上記のコードでは、最終的なステートメントブロックには、最初の一時変数の値、つまり102に戻ります。実行結果は次のとおりです。
実行:tryfinally102は正常に構築されています(合計時間:0秒)
結論:1。トライに戻り声明があるかどうかに関係なく、最終的にステートメントは間違いなく実行されます(最終的に、名前は良いです)。
2.最終的には戻りのステートメントがあり、tryに戻りがある場合、tryで戻るステートメントを実行する前に、最初にコードが実行され、その後、returnステートメントがある場合最終的には、直接戻ってきて、Tryでreturnステートメントを実行しなくなります。