关于执行问题 肯定是执行的try,然后是finally,并且finally中是一定会被执行的,不管try中有没有return语句
当try和finally中同时有return时,返回的是finally中的rerurn .问题? 到底try中的return是没有执行 还是被finally中的覆盖呢 测试如下
新建一个对象类
public class People {
String name;
String age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public People() {
super();
// TODO Auto-generated constructor stub
}
public People InstanceName(String name,People p){
p.setName(name);
return p;
}
public People InstanceAge(String age,People p){
p.setAge(age);
return p;
}
}
一个测试类
public class Test {
public static void main(String[] args) {
People p = new People();
test1(p);
System.out.println(p.getName());
System.out.println(p.getAge());
}
public static People test1(People p){
String s = "";
try{
// System.out.println("try.....");
return p.InstanceName("name", p);
}
finally{
System.out.println("finally.....");
return p.InstanceAge("age", p);
}
}
}
输出结果 显示
finally.....
name
age
结果: try中的return语句执行生效了 ,猜测 可能是java关于方法的的返回值 应该在内存中是有一个存储空间的 当try和finally中的return返回的都是基本类型的数据时都同时执行的时候 后者执行的把前者执行的给覆盖掉了。