try{}catch{}finally{}
1 package com.xiaou.test1; 2 3 public class FinallyDemo { 4 // 第一种情况 5 public static int test1() { 6 try { 7 return 1; 8 }catch(Exception e) { 9 return 2; 10 }finally { 11 return 3; 12 } 13 } 14 // 第二种情况 15 public static int test2() { 16 int i = 0; 17 try { 18 i++; 19 return i; 20 21 }catch(Exception e) { 22 return 2; 23 }finally { 24 i--; 25 } 26 } 27 // 第三种情况 28 public static int test3() { 29 try { 30 int i = 1/0 ; 31 return i; 32 }catch(Exception e) { 33 return 1; 34 }finally { 35 System.out.println("我被执行了"); 36 } 37 } 38 public static void main(String[] args) { 39 // 返回的是3 40 // 因为finally代码块无论是报错还是在try代码块中return了他将都会执行 41 System.out.println(test1()); 42 // 返回的是1 43 // 因为在执行到return的时候会将值保存直到finally执行完成后返回, 44 //所以finally怎么改变这个值都不会受到影响 45 System.out.println(test2()); 46 System.out.println(test3()); 47 } 48 }
JAVA的初始化顺序:
父类的静态成员初始化>父类的静态代码块>子类的静态成员初始化>子类的静态代码块>父类的代码块>父类的构造方法>子类的代码块>子类的构造方法
注意:静态成员和静态代码块只有在类加载的时候执行一次,再次创建实例时,不再执行,因为只在方法区存在一份,属于一整个类。