结论:try和catch相当于程序分支,finally块中不会改变变量的指针(引用地址);和final修饰的变量类似。
public class Test { public static AreaRQ fun() { AreaRQ rq=new AreaRQ(); try { rq.setAppNo("1"); rq.setAppNo(String.valueOf(4/0)); rq=null; return rq; } catch (Exception e) { e.printStackTrace(); rq=null; return rq; } finally{ if(null==rq){ rq=new AreaRQ(); rq.setAppNo("3"); }else{ rq.setAppNo("3"); rq=null; } } } public static void main(String[] args) { AreaRQ rq= fun(); System.out.println(Gson.toJson(rq)); } }
final变量:http://www.jb51.net/article/86644.htm
引用数据类型存储的引用对象在堆内存中的地址,final修饰引用类型之后,要求该引用指向的堆内存空间(或者说该引用存储的堆内存地址)不能改变。