logo

Разлика между final, finally и finalize

Final, finally и finalize са ключови думи в Java, които се използват при обработка на изключения. Всяка от тези ключови думи има различна функционалност. Основната разлика между final, finally и finalize е, че финал е модификатор на достъп, накрая е блокът в обработката на изключения и финализирам е методът на обектния клас.

Заедно с това има много разлики между final, finally и finalize. Списък с разликите между final, finally и finalize е даден по-долу:

г-н не Ключ финал накрая финализирам
1. Определение final е ключова дума и модификатор за достъп, който се използва за прилагане на ограничения върху клас, метод или променлива. накрая е блокът в Java Exception Handling за изпълнение на важния код, независимо дали изключението възниква или не. finalize е методът в Java, който се използва за извършване на обработка на почистване точно преди обектът да бъде събран боклук.
2. Приложим за Ключовата дума Final се използва с класовете, методите и променливите. Блокът finally винаги е свързан с блока try and catch при обработката на изключения. методът finalize() се използва с обектите.
3. Функционалност (1) Веднъж декларирана, крайната променлива става постоянна и не може да се променя.
(2) окончателният метод не може да бъде заменен от подклас.
(3) последният клас не може да бъде наследен.
(1) finally block изпълнява важния код, дори ако възникне изключение или не.
(2) блок finally почиства всички ресурси, използвани в блока try
finalize методът извършва почистващите дейности по отношение на обекта преди неговото унищожаване.
4. Екзекуция Final методът се изпълнява само когато го извикаме. Блокът finally се изпълнява веднага щом се изпълни блокът try-catch.

Неговото изпълнение не зависи от изключението.

методът finalize се изпълнява точно преди обектът да бъде унищожен.

Краен пример на Java

Нека разгледаме следния пример, където декларираме окончателна променлива възраст. Веднъж деклариран, той не може да бъде модифициран.

FinalExampleTest.java

 public class FinalExampleTest { //declaring final variable final int age = 18; void display() { // reassigning value to age variable // gives compile time error age = 55; } public static void main(String[] args) { FinalExampleTest obj = new FinalExampleTest(); // gives compile time error obj.display(); } } 

Изход:

Разлика между final, finally и finalize

В горния пример сме декларирали променлива final. По същия начин можем да декларираме методите и класовете окончателни, като използваме ключовата дума final.

Java най-накрая Пример

Нека видим примера по-долу, където кодът на Java хвърля изключение и блокът catch обработва това изключение. По-късно блокът finally се изпълнява след блока try-catch. Освен това останалата част от кода също се изпълнява нормално.

НакраяExample.java

 public class FinallyExample { public static void main(String args[]){ try { System.out.println('Inside try block'); // below code throws divide by zero exception int data=25/0; System.out.println(data); } // handles the Arithmetic Exception / Divide by zero exception catch (ArithmeticException e){ System.out.println('Exception handled'); System.out.println(e); } // executes regardless of exception occurred or not finally { System.out.println('finally block is always executed'); } System.out.println('rest of the code...'); } } 

Изход:

Разлика между final, finally и finalize

Пример за финализиране на Java

FinalizeExample.java

 public class FinalizeExample { public static void main(String[] args) { FinalizeExample obj = new FinalizeExample(); // printing the hashcode System.out.println('Hashcode is: ' + obj.hashCode()); obj = null; // calling the garbage collector using gc() System.gc(); System.out.println('End of the garbage collection'); } // defining the finalize method protected void finalize() { System.out.println('Called the finalize() method'); } } 

Изход:

Разлика между final, finally и finalize