java中try中有return,后面有finally执行顺序问题

2025-06-27 05:13:08
推荐回答(1个)
回答1:

  1. 关于执行问题  肯定是执行的try,然后是finally,并且finally中是一定会被执行的,不管try中有没有return语句

  2. 当try和finally中同时有return时,返回的是finally中的rerurn  .问题? 到底try中的return是没有执行 还是被finally中的覆盖呢  测试如下


  3.   新建一个对象类
    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;
        }
        
    }

  4. 一个测试类


  5. 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);     
                  
            }  
        }  
    }

  6. 输出结果 显示

  7. finally.....
    name
    age

    结果:  try中的return语句执行生效了  ,猜测 可能是java关于方法的的返回值 应该在内存中是有一个存储空间的 当try和finally中的return返回的都是基本类型的数据时都同时执行的时候 后者执行的把前者执行的给覆盖掉了。