final:是一个关键字,用于修饰类、变量和方法。修饰类时,表示该类不能被继承,修饰变量时,表示该变量的值不能被修改,修饰方法时,表示该方法不能被子类覆盖。
finally:是一个关键字,在异常处理中使用,它通常和try/catch配合使用,并且附带一个语句块,无论是否发生异常或者抛出异常,这段语句最终都会执行,通常被用来关闭/释放资源
finalize:是一个方法,它是在java.lang.Object中定义的,即每一个对象都有这个方法,这个方法在垃圾回收器gc启动并且回收对象的时候被调用,gc可以回收大部分的对象,包括new出来的对象,我们创建对象一般都是new的,所以一般不需要程序员去实现finalize。在该方法中,可以编写对象资源清理的逻辑。但从Java9开始,该方法已被废弃,并且不推荐使用。在现代的Java应用程序中,通常使用"try-with-resources"或类似的机制来手动管理资源,而不是依赖"finalize"方法。
总结:它们在名称上相似,因此需要根据用途和语义应用于不同的场景。