There are many differences between final, finally and finalize. A list of differences between final, finally and finalize are given below:
| No. | final | finally | finalize | 
|---|---|---|---|
| 1) | Final is used to apply restrictions on class, method and variable. Final class can't be inherited, final method can't be overridden and final variable value can't be changed. | Finally is used to place important code, it will be executed whether exception is handled or not. | Finalize is used to perform clean up processing just before object is garbage collected. | 
| 2) | Final is a keyword. | Finally is a block. | Finalize is a method. | 
class FinalExample{
public static void main(String[] args){
final int x=100;
x=200;//Compile Time Error
}}class FinallyExample{
public static void main(String[] args){
try{
int x=300;
}catch(Exception e){System.out.println(e);}
finally{System.out.println("finally block is executed");}
}}class FinalizeExample{
public void finalize(){System.out.println("finalize called");}
public static void main(String[] args){
FinalizeExample f1=new FinalizeExample();
FinalizeExample f2=new FinalizeExample();
f1=null;
f2=null;
System.gc();
}}