final、finally、finalize区别
final
final关键字可以用来修饰类,方法以及成员变量,当用在不同的场景下时具有不同的意义。
修饰类
如果修饰类,则代表这个类不可继承
修饰方法
如果修饰方法,则代表这个方法不可覆写;同时,允许编译器将所有对这个方法的调用转化为inline调用,也就是说,把所有的调用处的方法名全部换为方法主体,这也会使得代码主体变得异常庞大,非常影响性能。
修饰变量
如果修饰基本类型,则代表该变量的值不可改变。
如果修饰引用类型,则代表该对象的引用不可改变。
finally
finally是用于异常处理时使用的语句,由finally关键词修饰的代码主体,无论异常是否发生,该代码块总会执行。
注意:哪怕try/catch中存在return,finally修饰的代码块依然会执行。
具体情况可以如下:
finally中包含return语句,则无论之前try语句中是否包含retrun,都不再执行,只执行finally中的return。
finally中不包含return语句,也没有改变try中的返回值,则finally中的语句执行完后会继续执行try中的return。
finally中不包含return语句,但是改变了try中的返回值,则finally中的语句执行完后会继续执行try中的return,并通过return继续返回值(此处类似函数调用,如果finally改变的返回值是基本类型,则改变不起作用;如果是引用类型,则finally中对该引用类型的属性值的改变起作用)。
finalize
finalize是一个方法名,它是在 Object 类中定义的,因此所有的类都继承了它。当需要从堆中永久删除某个对象之前,垃圾回收器会主动调用该对象的finalize()方法。
需要注意的是:
程序猿无法确定垃圾回收器何时调用该方法(哪怕你明着写出来,依然无法确定,所以一般程序猿不需要调用该方法)
无法保证调用不同对象的方法的顺序。换句话说如果对象A里面引用了对象B,则有可能先调用A的finalize()方法,也有可能先调用B的finalize()方法。
最新文章
- android 两种实现计时器时分秒的实现,把时间放在你的手中~
- 20140701立项 移植WatermarkLabelSys
- 合并 hdfs 文件
- Oracle- UPDATE FROM讲解
- MongoDB实战开发 【零基础学习,附完整Asp.net示例】
- android中更改spinner、AutoCompleteTextView切割线的颜色
- SqlServer发送邮件,定时作业
- 使用Windows2003创建AD服务器 - 进阶者系列 - 学习者系列文章
- Angular4 后台管理系统搭建(1) - 建立一个通用的Wijmo5 flexgrid分页器组件
- Mac OS启动服务优化高级篇
- js实现内容点击复制
- Ubuntu 16下安装64位谷歌Chrome浏览器
- C#处理json实战
- mysql语句将日期转换为时间戳的方法
- WCF三种通信方式
- C# Parallel.Invoke 实现
- Ajax进阶之原生js与跨域jsonp
- 平衡树及笛卡尔树讲解(旋转treap,非旋转treap,splay,替罪羊树及可持久化)
- 查看SQL SERVER数据库的连接数
- grep和sed匹配多个字符关键字的用法