前提・実現したいこと
oracle java se8 silverの資格の為の勉強をしています。
try-catch-finallyにてcatchブロック内でreturnする前にfinallyブロックで変数に+10しているのですが反映されない理由がわかりません。
もともとの問題はsampleメソッドの中のval変数はint型でプリミティブ型です。この解答には納得がいきます。
解答には続きがあり、変数を参照型に変更すればfinallyブロックの処理が適用されるはずだとあります。結果として反映されないのですが理由がわかりません。
どなたかわかる方回答よろしくお願いいたします。
該当のソースコード
Java
1public class Main { 2 public static void main(String[] args) { 3 Integer result = sample(); 4 //-> 10 (プリミティブ型) 5 //-> 20 (参照型になるはず) 6 } 7 8 9 private static Integer sample() { 10 Integer val = new Integer(0); 11 try { 12 String[] array = {"A", "B", "C"}; 13 System.out.println(array[3]); 14 } catch(RuntimeException e) { 15 val = 10; 16 return val; 17 } finally { 18 val += 10; 19 } 20 return val; 21 } 22}
この質問の投稿者はすでに退会しているため、質問者からの返信がない点にご留意ください。
回答3件
この質問の投稿者はすでに退会しているため、質問者からの返信やベストアンサーの選定がない点にご留意ください。
あなたの回答
tips
プレビュー

退会済みユーザー
2019/07/23 10:25
2019/07/23 10:37
2019/07/23 10:45
退会済みユーザー
2019/07/24 00:59