final,finally,finalize

fianl修饰符:

修饰变量

成员变量:通过初始化赋值或者通过静态代码块赋值

局部变量:当初始化没有给final赋值可通过后面代码对final变量进行赋值

修饰基本类型变量和引用变量区别:

final修饰基本类型变量时,基本类型的变量值不能被改变。final修饰引用变量时,由于引用变量存储的时对象的地址,该地址不可改变,但是 对象可以改变

宏变量:final一个重要的用途就是宏变量。

前置条件:

1.使用final修饰

2.指定了初始值 

3.该初始值可以在编译时就被确定下来。

编译器会把程序中所有用到该变量的地方直接替换成该变量的值

修饰方法

如果由于某些原因,不希望子类重写父类的某个方法,则可以使用 final修饰

修饰的方法不可被重写。如果子类试图重写会发生编译异常。

修饰类

子类继承父类可以访问内部数据。并通过重写父类方法实现细节 ,这可能导致一些不安全的因素。为了保证某个类不被继承,则可以通过final修饰符修饰。

final修饰的类不可有子类。例如java.lang.Math就是一个final类,不可以有子类。

finally修饰符:

有些时候,程序在try块里打开了一些物理资源(例如:数据库连接,网络连接和磁盘文件等),这些物理资源都必须显示回收。就可以使用finally进行回收

不管try块中的代码块是否出现异常,也不管哪个catch块会被执行,甚至在try块或catch块中执行了return语句,finally总会被执行

 finalize

垃圾回收机制用到finalize。当程序创建对象、数组等引用类型实体时,系统都会在堆内存中为之分配一块内存区,对象就保存在这块内存中,当这块内存不再被任何引用变量引用时,这块内存就会变成垃圾,等待垃圾回收机制进行回收。

finalize 在垃圾回收之前进行资源清理。

如果程序中某个对象不再会有任何引用变量引用它,它就进入了 可恢复状态,这时调用垃圾回收机制回收该对象内存,在回收对象之前调用finalize()方法进行资源清理,如果对象被再次引用则进入可达状态,如果没有被其他引用变量引用则进入不可达状态。

 

posted @ 2020-05-22 15:21  Cool_Yang  阅读(125)  评论(0)    收藏  举报