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. По същия начин можем да декларираме методите и класовете окончателни, като използваме ключовата дума 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...'); } }
Изход:
Пример за финализиране на 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'); } }
Изход: