smallT t = new smallT();
建立了一个新的smallT()对象
新对象调用get()方法,先return了1,然后最终执行了finally后面的代码return了2 覆盖了1 所以最终返回了2
并将2赋值给了b
打印b就是2 作者: 陈俊来 时间: 2012-10-10 12:03
public class smallT {
public static void main(String args[]) {
smallT t = new smallT();
int b = t.get();
System.out.println(b);
}
public int get() {//在try{}finally{}中,finally中的内容是必须要执行的。你可以当作是finally中的return将try中的return覆盖掉了,使try中return失效。 try {
return 1;
} finally {
return 2;
}
}
}作者: qhasilver 时间: 2012-10-10 13:12
class Test
{
private static int b = 5;
public static void main(String[] args)
{
Test t = new Test();
System.out.println("main:"+b);
b = t.get();
System.out.println("t.get():"+b);
}
public int get()
{
int a = 0;
try
{
a = 10;
return 1;
}
finally
{
System.out.println("try a:"+a);
System.out.println("try b:"+b);
return 2;
}
}
}
我是菜鸟 发表于 2012-10-10 13:27
class Test
{
private static int b = 5;
也非常感谢你,我明白了。我为代码少考虑了一种情况。
帮我看看这个问题: 关于TCP多线程上传图片 作者: 王虎 时间: 2012-10-10 15:01
这个小题如果在加个catch,执行流程是什么?
public class smallT
{
public static void main(String args[])
{
smallT t = new smallT();
int b = t.get();
System.out.println(b);
}