2017-07-14 20 views
0

次のコードスニペットでは、finallyブロックでjの値が20に変更され、元の値10が返されます。tryブロックで値が最後に変更されました。

public class Test{ 

    public static void main(String args[]){ 
     int i=testMethod(10); 
     System.out.println(i); 
    } 

    public static int testMethod(int j){ 
     try{ 
      return j; 
     }finally{ 
      j=20; 
     } 
    } 
} 
+0

jを20に戻す場合は、tryブロックではなくfinallyブロックの後ろにreturnステートメントを挿入します。 –

答えて

1

finally全体tryブロック完了後に実行されます。つまり、この場合はjが既に読み込まれ、返されようとしています。 jfinallyブロックに割り当てられた後で再読み込みされないため、割り当てには明らかな効果はありません。

+0

'j = 20'が' return 20'に置き換えられたらどうなりますか?この場合、 – Lagerbaer

+1

@ Lagerbaer 20が返されます。 – arshajii

+0

したがって、基本的にどのような種類の割り当て操作が冗長であるのですか? –

関連する問題