public class J {
public Integer method(Integer x)
{
Integer val = x;
try
{
return val;
}
finally
{
val = x + x;
}
}
public static void main(String[] args)
{
J littleFuzzy = new J();
System.out.println(littleFuzzy.method(new Integer(10)));
}
}
"10"を返します。catchステートメントのreturn文の動作
戻り値の型IntegerをStringBuilderに置き換え、出力を変更しました。
public class I {
public StringBuilder method(StringBuilder x)
{
StringBuilder val = x;
try
{
return val;
}
finally
{
val = x.append("aaa");
}
}
public static void main(String[] args)
{
I littleFuzzy = new I();
System.out.println(littleFuzzy.method(new StringBuilder("abc")));
}
}
出力は "abcaaa"
だから、誰もが詳細に私を説明することができますか。? 違いは何ですか?
私のマシンでこのプログラムを実行すると、私も混乱します。最初のケースでは10を返します(20を返すと予想していました)、2番目のケースではabcaaaが返されています(これは追加したものです)。私はまた、この行動に困惑しています。 (私はその間にupvoted whoではない)まだ – JProgrammer
それは良い質問です。ベーシックの思い出をいくつか戻しました。それのどこが悪いんだい ? – Siddharth