finally final finalize区别及 try catch finally中return值分析
来源:互联网 发布:保险公司业务自助优化 编辑:程序博客网 时间:2024/06/16 09:32
一、final修饰符(关键字)
类被声明为final,意味着它不能被继承。因此一个类不能既被声明为abstract的,又被声明为final的。
变量或方法声明为final,可以保证它们在使用中不被改变;(引用变量对应的引用地址不能变,但是堆中对应的对象可以变); 被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改(不可修改的是栈中存储的内存地址,不是堆中的对象);
方法被声明为final的也同样只能使用,不能重写;
方法的参数被final修饰表示在方法体内,该参数的值不可以被修改。
final StringBuffer sb = new StringBuffer(“Hello”);
sb.append(“Itcast”);//此时sb中的内容为 “HelloItcast”,这就是对象改变了.可以编译通过.
sb = new StingBuffer(“World”);//这就是引用改变.sb指向了新的引用. 会编译报错.
二、finalize是方法名。
Java技术允许使用finalize()方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在Object类中定义的,因此所有的类都继承了它。子类覆盖finalize()方法以整理系统资源或者执行其他清理工作。finalize()方法是在垃圾收集器删除对象之前对这个对象调用的。
三、finally
finally在异常处理时提供finally块来执行任何清除操作。无论有没有异常被抛出、捕捉,finally块都会被执行。
四、try catch finally
1.try块或catch块如果有return 时, 返回值保存在一个临时区域里
2.执行finally语句块。若finally语句有返回值,则此返回值将替换掉临时区域的返回值、若finally 中有对之前返回的值进行了操作,并不会影响返回的值
3.将临时区域的返回值送到上一级方法中。
4.finally 最后执行指的是 try catch 模块最后执行
注意:返回值,需要区分是基本类型还是引用类。 如果是基本类型,临时区域存储的是基本类型值,finally中的更改不会对临时区域中的值有影响; 如果是应用类型,临时区域存储的是对象的引用地址,finally中更改对象时,会对临时区域的值对应的对象有影响
import org.junit.Test;/** * @Description 测试finally * @author zhangyt */public class TestFinally { @Test public void main() { System.out.println(test());//返回2 System.out.println(test2());//返回"s2" ,需要考虑String是final的以及常量池的作用 System.out.println(test3().toString());//"s1s2s3" } public int test(){ int a = 0; try { a=1/0; return a; } catch (Exception e) { a=2; return a; }finally{ a=3; //return a; } } public String test2(){ String s = "s"; try { s = "s1"; int i = 1/0; return s; } catch (Exception e) { s = "s2"; return s; }finally{ s = "s3"; //return s; } } public StringBuilder test3(){ StringBuilder sb = new StringBuilder(); try { sb.append("s1"); int i = 1/0; return sb; } catch (Exception e) { sb.append("s2"); return sb; }finally{ sb.append("s3"); //return sb; } }}
- finally final finalize区别及 try catch finally中return值分析
- ==与equals的区别,try......catch......finally,final、finally、 finalize的区别
- try catch finally return?
- try catch finally return
- try catch finally return
- 在try-catch-finally中, return
- try-catch-finally中return的执行情况
- try-catch-finally中return的执行情况
- try-catch-finally中return的执行情况
- try-catch-finally中return的执行情况
- try-catch-finally中return的执行情况
- try-catch-finally中return的执行情况
- try-catch-finally中return的执行情况
- try-catch-finally中return的执行情况
- try-catch-finally中return的执行情况
- try-catch-finally中return的执行情况
- try-catch-finally中return的执行情况
- try-catch-finally中return的执行情况
- /bin/sh: 1: lzop: not found问题
- sysbench安装过程出现的问题解决办法
- windows php7 安装 mongodb 扩展
- sleep yield,守护线程,释放锁,死锁例子volatile
- 如何打造支撑百万用户的分布式代码托管平台
- finally final finalize区别及 try catch finally中return值分析
- Intellij-maven配置
- [重装系统]重装GHOST WIN7 系统 蓝屏的原因以及解决办法
- AndroidStudio 查看类继承关系
- SpringMVC笔记(一)
- JQuery中Ajax使用
- Object内部方法及通用接口方法解析
- Android系统shell中的clear命令实现
- 标准盒子模型和IE盒子模型