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中的行为,最后是
现在我只是将返回类型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),第二种情况下它返回abcaaa(即在追加后)。我也对这种行为感到困惑。 (在我之间不是谁upvoted它。) – JProgrammer 2012-02-28 05:58:11
它是一个很好的问题。回想一下基本的一些回忆。那有什么不对? – Siddharth 2012-02-28 06:00:00