java陷阱-------try中的return

来源:互联网 发布:淘宝卖家怎么看粉丝 编辑:程序博客网 时间:2024/05/04 13:05

public class Test {

 public static void main(String[] args) {
  System.out.println(decision());
 }
 
 public static boolean decision(){
  try{
   return true;
  }finally{
   return false;
  }
 }
}

打印的是什么呢?

打印: false;
因为finally只要不中断程序就一定会执行。。。。
栈中先放入true,然后栈中再放入false,然后就返回栈中的第一个了


public class Test {

 public static void main(String[] args) {
  decision();
 }
 
 public static void  decision(){
  try{
   System.out.println("try 中");
   System.exit(0);
  }finally{
   System.out.println("finally 中");
  }
 }
}

打印: try中。。。

因为程序中断了,当然不执行finally


public int getName1(){
     try{
      System.out.println("try");
      return 1;
     }finally{
      System.out.println("finally");
      
     }
}
结果:
try
finally
1

//------------------------------------------------------
public int getName1(){
     try{
      System.out.println("try");
      return 1;
     }finally{
      System.out.println("finally");
      return 2;
     }
}

结果:
try
finally
2

Return并不是让函数马上返回,而是return语句执行后,将把返回结果放置进函数栈中,此时函数并不是马上返回,它要执行finally语句后才真正开始返回。

原创粉丝点击