final修饰类
基于上述final字面意思,final有如下特性:
1、final+类,这个类不能被继承;若能继承就能改变类里方法,很显然跟final的字母意思冲突,所以不能继承;
2、final+类,类里的所有方法默认都是final方法;
final修饰变量
1、final+一般变量: 该变量一旦被初始化,便不能被修改; 2、final+引用类型变量:该变量一旦被初始化,便不能指向指向另一个对象;
final修饰方法
使用“final+方法”的原因:
1、把方法锁定,以防任何继承类修改它的含义;
2、早期java方法中,会将final方法转为内嵌调用,以提升性能效率,但不怎么理想,现在不这样用了;
finally的存在意义
finally是堆异常处理的一种补充,为异常处理事件提供一个处理机制:一般用来关闭文件或释放其他系统资源; 比如下面的框架:你开了一个流处理文件,可能成功了,也可能没成功,但不管怎样你都得把数据流给关闭,于是就在finally里给关了;
Try{… …创建数据流}
catch(Exception e){… … 数据流还在 }
finally{ … …关闭数据流 }
若不用finally,若程序复杂,得在多处关闭数据流,还得组织结构等,比较麻烦;
Try{… …创建数据流}
catch(Exception e1){… … 关闭数据流;throw e1;}
catch(Exception e2){… … 关闭数据流;throw e2;}
catch(Exception e3){… … 关闭数据流;throw e3;}
catch(Exception e4){… … 关闭数据流;throw e4;}
… …
finally的特性:
1、只有当它所在的try{… …}语句得到执行时,finally才执行;不管报不报错,你得先“尝试”了才会有个结果;
2、如果“return … …try{… …}”在try前执行了return,finally不执行;
如果一个try{…System.exit(0) …}语句中调用System.exit(0)强制终止jvm,finally不执行;
如果Java虚拟机终止运行时,finally语句块也不会执行;
3、如果try{…retrun …}、try{… break …}、try{… continue …},那么finally在这些转移语句执行前执行;即在 转移之前回收资源;
作者:小小梦里花007 来源: 原文:https://blog.csdn.net/jim_007/article/details/54017221 版权声明:本文为博主原创文章,转载请附上博文链接!