Java:final、finally、finalize的区别

1、final--是为修饰符(关键字)

final 在 Java 中是一个保留的关键字,可以声明变量、方法、类。任何变量前被 final 修饰就是 final 变量;定义的类前被 final 修饰就是 final 类;任何方法前被 final 修饰就是final方法。

  • 如果一个类被声明为final的话,则此类不能被继承,因此一个类不能既被声明为final的,又被声明为abstract的;
  • 如果一个方法被声明为final的话,则此方法只能被使用或者重载,不能被重写。并且final方法比非final方法加载快一点;
  • 如果一个变量被声明为final的话,则此变量不能被改变,只能被使用,并且此变量在定义时就要赋初值。final修饰的变量可以是普通变量,也可以是引用变量。如果是普通变量,则为常量,不可变;如果是引用变量,则修饰的引用变量的引用不可变,但引用变量的内容可变。

final小结:
(1)final 方法比非 final快一些;

(2)final关键字提高了性能。JVM会缓存final变量;

(3)final变量可以安全的在多线程环境下进行共享,而不需要额外的同步开销;

(4)使用final关键字,JVM会对方法、变量及类进行优化。


2、finally--异常处理中的程序块

在异常处理时,使用finally块来进行必要的清理工作,不论是否有异常发生,

finally块中语句都会被执行;如果发生了异常,则先执行catch语句,再执行finally块;


3、finalize--方法名

在垃圾回收器将内存中的对象进行清空之前,允许使用finalize()方法,先做必要的清理工作;

这个方法是垃圾回收器在确认这个对象没有被引用时(即为垃圾对象),对这个对象进行调用此方法;

此方法是Object对象中的方法,所以所有的都继承了这个finalize()方法;在子类中,可以重写此方法来进行清理操作;

finalize()方法是在垃圾回收器在删除此对象前对其进行调用的。

### 回答1: final 是一个修饰符,能够用于类、变量和方法,表示它们不能被修改或重写。finally是一个关键字,它在异常处理语句中使用,表示肯定会被执行的代码。finalize是一个Object类中的方法,在垃圾收集器准备回收对象时会调用该方法,用于清理资源。 ### 回答2: 在Java中,finalfinallyfinalize是三个不同的关键字,具有不同的用途和含义。 1. finalfinal是一个修饰符,用于声明一个不能被继承的类、一个不能被重写的方法、或者一个不能被修改的变量。当一个类被声明为final时,该类不能被其他类继承。当一个方法被声明为final时,该方法不能被子类重写。当一个变量被声明为final时,该变量的值不能被修改。 2. finallyfinally是一个关键字,用于定义在try-catch语句块中的一个代码块,无论是否发生异常,该代码块都会被执行。finally块通常用于释放资源,比如关闭文件、网络连接等。 3. finalizefinalize是一个方法,用于在Java对象被垃圾回收器销毁之前进行一些清理工作。finalize方法的定义在Object类中,可以被子类重写。finalize方法在垃圾回收器准备销毁对象时会被调用,但并不能保证一定会执行,因为垃圾回收是由垃圾回收器自行决定的。 总结: final用于修饰类、方法或变量,表示不可继承、重写或修改。finally用于定义在try-catch语句块中的一个代码块,无论是否发生异常,都会执行。finalize是一个方法,在Java对象被销毁之前执行一些清理工作,但不能保证一定会被执行。 ### 回答3: 在Java中,finalfinallyfinalize是三个不同的概念。 1. finalfinal是一个关键字,可以修饰变量、方法和类。当用final修饰变量时,表示该变量的值不可被更改。当用final修饰方法时,表示该方法不可被子类重写。当用final修饰类时,表示该类不可被继承。final主要用于限定对象的状态、行为或结构的不可改变性。 2. finallyfinally也是一个关键字,用于定义在try-catch结构中的一个代码块。无论try块中是否发生异常,finally块中的代码都会被执行。通常用finally来释放资源、关闭文件、数据库连接等必要的清理操作。 3. finalizefinalize()是一个方法名,属于Object类的一个方法,用于Java的垃圾回收机制。当一个对象变成垃圾,即没有任何引用指向该对象时,垃圾回收器会在适当的时机调用该对象的finalize()方法,进行资源释放和清理操作。但是,由于finalize()方法的执行时机不确定,并且Java8中已经不鼓励使用finalize()方法,因此一般不建议使用该方法。 总结:final表示不可改变性,finally表示无论是否发生异常都会执行的代码块,而finalize是垃圾回收器在释放对象时调用的方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王小二(海阔天空)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值