В Java, з якою метою зробити ключові слова final
, finally
і finalize
виконати?
В Java, з якою метою зробити ключові слова final
, finally
і finalize
виконати?
Відповіді:
final
може використовуватися для позначення змінної "незмінною"
private final String name = "foo"; //the reference name can never change
final
також може зробити метод не "перевизначуваним"
public final String toString() { return "NULL"; }
final
також може зробити клас, який не "успадковується". тобто клас не можна підкласифікувати.
public final class finalClass {...}
public class classNotAllowed extends finalClass {...} // Not allowed
finally
використовується в операторі try / catch для виконання коду "завжди"
lock.lock();
try {
//do stuff
} catch (SomeException se) {
//handle se
} finally {
lock.unlock(); //always executed, even if Exception or Error or se
}
Java 7 має нову заяву про спробу використання ресурсів, яку ви можете використовувати для автоматичного закриття ресурсів, які явно або неявно реалізують java.io.Closeable або java.lang.AutoCloseable
finalize
викликається, коли об’єкт збирається сміттям. Вам рідко потрібно це замінити. Приклад:
protected void finalize() {
//free resources (e.g. unallocate memory)
super.finalize();
}
Object#finalize()
метод був застарілим в Java 9 ( JDK-8165641 ).
Кінцеве ключове слово використовується для оголошення констант.
final int FILE_TYPE = 3;
Ключове слово нарешті використовується в операторі try catch для вказівки блоку коду, який буде виконуватися незалежно від викидів.
try
{
//stuff
}
catch(Exception e)
{
//do stuff
}
finally
{
//this is always run
}
І нарешті (ха-ха), finalize я не зовсім впевнений, що це ключове слово, але функція finalize () є в класі Object.
http://allu.wordpress.com/2006/11/08/difference-between-final-finally-and-finalize/
остаточне - константне оголошення.
нарешті - Блок нарешті завжди виконується при виході блоку спроби, за винятком виклику System.exit (0). Це гарантує, що блок нарешті виконується, навіть якщо трапляється несподіване виняток. Але нарешті корисний не лише для обробки винятків - це дозволяє програмісту уникнути випадкового обходу коду очищення шляхом повернення, продовження чи злому. Внесення коду очищення в блок нарешті - це завжди хороша практика, навіть коли не передбачаються винятки.
finalize () - метод допомагає у збиранні сміття. Метод, який викликається до того, як об’єкт відкидається збирачем сміття, дозволяючи йому очистити свій стан. Не слід використовувати для звільнення ресурсів, що не належать до пам'яті, таких як дескриптори файлів, сокети, підключення до бази даних тощо, оскільки Java має лише кінцеву кількість цих ресурсів, і ви не знаєте, коли збиратиметься сміття, щоб звільнити ці ресурси, що не належать до пам'яті. за допомогою методу finalize ().
Ви пробували шукати в google і потребуєте роз’яснень для пояснення?
final: final - це ключове слово. Змінна, визначена як остаточна, повинна бути ініціалізована лише один раз і не може бути змінена. Класи Java, оголошені як остаточні, не можуть бути розширені. Методи, оголошені як остаточні, не можна замінити.
нарешті: нарешті - це блок. Блок нарешті завжди виконується, коли виходить блок спроби. Це гарантує, що блок нарешті виконується, навіть якщо трапляється несподіване виняток. Але нарешті корисний не лише для обробки винятків - це дозволяє програмісту уникнути випадкового обходу коду очищення шляхом повернення, продовження чи злому. Внесення коду очищення в блок нарешті - це завжди хороша практика, навіть коли не передбачаються винятки.
finalize: finalize - це метод. Перш ніж об’єкт збирається сміттям, система виконання викликає метод finalize (). Ви можете написати код випуску системних ресурсів у методі finalize () перед тим, як збирати сміття.
1. Final • Final використовується для застосування обмежень щодо класу, методу та змінної. • Остаточний клас не можна успадкувати, остаточний метод не можна замінити, а останнє значення змінної не можна змінити. • Кінцеві змінні ініціалізуються під час створення, за винятком випадку порожньої кінцевої змінної, яка ініціалізується в конструкторі. • Final - це ключове слово.
2. Нарешті • Нарешті використовується для обробки винятків разом із спробою і зловленням. • Він буде виконаний незалежно від обробки винятків чи ні. • Цей блок використовується для закриття таких ресурсів, як підключення до бази даних, ресурси вводу-виводу. • Нарешті, це блок.
3. Finalize • Finalize викликається потоком збору сміття безпосередньо перед тим, як збирати відповідні об’єкти для виконання очищення. • Це останній шанс для об'єкта виконати будь-яке очищення, але оскільки не гарантується, що буде викликано finalize (), погана практика зберігати ресурс до завершення дзвінка. • Фіналізація - це метод.
Значення final у java: -застосовується до змінної означає, що відповідна змінна після ініціалізації більше не може бути змінена
private final double numer = 12;
Якщо ви спробуєте змінити це значення, ви отримаєте повідомлення про помилку.
-застосований до методу означає, що відповідний метод не можна замінити
public final void displayMsg()
{
System.out.println("I'm in Base class - displayMsg()");
}
Але фінальний метод можна успадкувати, оскільки ключове слово final обмежує перевизначення методу.
-застосований до класу означає, що відповідний клас не можна розширити.
class Base
{
public void displayMsg()
{
System.out.println("I'm in Base class - displayMsg()");
}
}
Сенс нарешті:
class TestFinallyBlock{
public static void main(String args[]){
try{
int data=25/5;
System.out.println(data);
}
catch(NullPointerException e){System.out.println(e);}
finally{System.out.println("finally block is always executed");}
System.out.println("rest of the code...");
}
}
у цьому прикладі, навіть якщо спроба-лову виконана чи ні, те, що знаходиться всередині нарешті, завжди буде виконано. Значення завершити:
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();
}}
перед викликом Сміттєзбирача.