Final, finally і finalize — це ключові слова в Java, які використовуються в обробці винятків. Кожне з цих ключових слів має різні функції. Основна відмінність між final, finally і finalize полягає в тому, що остаточний є модифікатором доступу, нарешті це блок у обробці винятків і завершити є методом класу об'єктів.
Крім того, існує багато відмінностей між final, finally і finalize. Список відмінностей між final, finally і finalize наведено нижче:
пан ні | ключ | остаточний | нарешті | завершити |
---|---|---|---|---|
1. | Визначення | final — ключове слово та модифікатор доступу, який використовується для застосування обмежень до класу, методу чи змінної. | finally — це блок у Java Exception Handling для виконання важливого коду, незалежно від того, виникає виняток чи ні. | finalize — це метод у Java, який використовується для виконання обробки очищення безпосередньо перед збиранням сміття. |
2. | Застосовується до | Ключове слово Final використовується з класами, методами та змінними. | Блок finally завжди пов’язаний із блоком try and catch у обробці винятків. | метод finalize() використовується з об’єктами. |
3. | Функціональність | (1) Після оголошення кінцева змінна стає постійною і не може бути змінена. (2) метод final не може бути замінений підкласом. (3) останній клас не може бути успадкований. | (1) блок finally запускає важливий код, навіть якщо виникає виняткова ситуація чи ні. (2) блок finally очищає всі ресурси, використані в блоці try | Метод finalize виконує очисні дії щодо об'єкта перед його знищенням. |
4. | Виконання | Метод Final виконується лише тоді, коли ми його викликаємо. | Блок finally виконується, як тільки виконується блок try-catch. Його виконання не залежить від винятку. | метод finalize виконується безпосередньо перед знищенням об’єкта. |
Останній приклад Java
Давайте розглянемо наступний приклад, де ми оголошуємо остаточну змінну age. Після оголошення його не можна змінити.
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 за допомогою ключового слова 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'); } }
Вихід: