java中final、finally、finalize的区别
程序员文章站
2022-11-18 10:55:59
简单区别 详细区别 final关键字 定义变量,包括静态和非静态的。 final修饰的是一个基本对象,就表示这个变量被赋予的值是不可变的,它是一个常量。并且表示它只能被赋值一次。 被final定义的变量必须被初始化:1》在定义时被初始化。 2》final变量在初始化模块中初始化,不可以在静态块中初始 ......
简单区别
- final用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。
- finally是异常处理语句结构中的一部分,表示总是执行。
- finalize是Object类的一个方法,在垃圾收集齐执行的时候会调用被回收对象的此方法提供,提供垃圾收集时的其他资源回收。
详细区别
final关键字
- 定义变量,包括静态和非静态的。
final修饰的是一个基本对象,就表示这个变量被赋予的值是不可变的,它是一个常量。并且表示它只能被赋值一次。
被final定义的变量必须被初始化:1》在定义时被初始化。 2》final变量在初始化模块中初始化,不可以在静态块中初始化。 3》静态final变量在静态初始化块中初始化,不可以在初始化模块中初始化。 4》final变量可以在类的构造器中初始化,但静态final变量不可以。
被final定义的方法,不可以被子类重写,但不影响它被子类继承。
被final定义的类不能被继承,由于关键字abstract定义的抽象类必须被继承它的子类重写而实现抽象类中的方法,所以final和abstract不能用来修饰同一个类。
finally关键字
finally关键字只能用于try/catch语句中:
try{ }catch{ }finally{ System.out.println("执行了finally语句块"); }
输出"执行了finally语句块"说明程序抛出了异常,执行finally语句块捕获程序抛出的异常之后,即不加处理,
也不继续向上抛出异常。
而且finally语句块不受return,continue和break关键字的阻碍。
inalize关键字
最后,我们再来看看finalize,它是一个方法,属于java.lang.Object类,它的定义如下:Java代
码protected void finalize() throws Throwable { }众所周知,finalize()方法是GC(garbage collector)运行机
制的一部分。
上一篇: 实战node静态文件服务器的示例代码
推荐阅读