考虑以下四个测试方法,它们会输出什么?
公共课测试{
public static void main(String [] args){
的System.out.println(TEST1());
的System.out.println(TEST2());
的System.out.println(TEST3());
的System.out.println(TEST4());
}
private static int test1(){
int i = 1;
尝试{
回归我;
} catch(例外e){
e.printStackTrace();
} finally {
i = 0;
}
回归我;
}
private static int test2(){
int i = 1;
尝试{
回归我;
} catch(例外e){
e.printStackTrace();
} finally {
i = 0;
回归我;
}
}
private static User test3(){
用户user =新用户(“u1”);
尝试{
返回用户;
} catch(例外e){
e.printStackTrace();
} finally {
user = new User(“u2”);
}
return null;
}
private static User test4(){
用户user =新用户(“u1”);
尝试{
返回用户;
} catch(例外e){
e.printStackTrace();
} finally {
user.setName( “U2”);
}
return null;
}
}
公共类用户{
public User(String name){
this.name = name;
}
私有字符串名称;
public String getName(){
返回名称;
}
public void setName(String name){
this.name = name;
}
@覆盖
public String toString(){
返回名称;
}
}
答案如下:
1
0
U1
U2
结论
1,不管尝试,最后都会执行;
2,在尝试中的回报,在最后执行前会把结果保存起来,即使在最后中有修改也以尝试中保存的值为准,但如果是引用类型,修改的属性会以最终修改后的为准;
3,如果试图/最终都有返回,直接返回终于中的回报。
转载的https://www.toutiao.com/a6677707611640431108/
网友评论