一、final关键字


1、final修饰的变量是一个常量,常量的名称要全部大写,而且字母与字母之间要用下划线分隔开,被final修饰的变量让程序变得更加严谨,而且给一些固定的数据起一些阅读性较强的名称。


2、final的字面意思是:最终。所以被final修饰的变量不能被修改,可以保证它们在使用中不被改变,该变量只能被赋值一次,被声明为final的变量必须在声明时给定初值。用来修饰数据时,包括成员变量和局部变量,对于成员变量来讲,必须在声明时、构造器或者初始化块中对它赋值, 如下图例:


final和 finally的区别_父类



3、final修饰局部变量时,既可以在定义时指定默认值,也可以不指定默认值。在变量的生存期中它的值不能被改变,不能对被final修饰的形参赋值,如下图:


final和 finally的区别_父类_02



4、被final修饰的类是一个最终类,所以不能够继承,如果子类继承被final修饰的父类时是会直接报错,其给的提示是要把父类的final去掉才能继承父类的所有方法,如下图例:

final和 finally的区别_局部变量_03


5、被final修饰的方法是一个最终方法,不能被重写,当重写的时候会提示其父类的方法是被final修饰的,所以不能够重写。但是被final修饰的方法,其子类是可以重载的,如下图:

final和 finally的区别_父类_04


总的说,final关键字的特点:

•final修饰的类是不能被继承的,因为其是一个最终类;

•final修饰的变量是一个常量,只能被赋值一次;

•final修饰的方法也不能重写,但能被重载;

•final可以修饰类、方法、变量;

•内部类只能访问被final修饰的局部变量。二、finally块

1、finally块通常放在try、catch的后面,有时可以直接放在try 的后面,但有时会不能放。

2、finally中的语句是正常执行或者处理异常之后必须执行的语句,finally块一般是用来关闭(释放)物理资源(数据库连接,网络连接,磁盘文件等)。无论是否发生异常,资源都必须进行关闭。

3、当没有必要资源需要释放时,可以不用定义finally块。

4、finally块中的代码总能执行,这就说明无论try、catch块中执行怎样的代码,是否发生异常,还是正常运行,finally块一定会被执行,如果想要finally块不执行,除非在try、catch块中调用退出虚拟机的方法,否则finally块无论怎么样还是会被执行,如下图所示:

final和 finally的区别_赋值_05


即便try、catch块中的代码发生了异常,但还是会执行到finally块,所以说明不管try、catch块中执行怎样的代码,finally块还是会被执行,如下图的结果显示,即使报错,但还是把finally块的内容打印出来:

final和 finally的区别_父类_06

                                </div><div><div></div></div>
<link href="https://csdnimg.cn/release/phoenix/mdeditor/markdown_views-60ecaf1f42.css" rel="stylesheet">
</div>

欢迎您关注我的公众.号:学习微站(studysth)

final和 finally的区别_java_07