W Javie, jaki cel zrobić słowa kluczowe final
, finally
a finalize
spełnić?
W Javie, jaki cel zrobić słowa kluczowe final
, finally
a finalize
spełnić?
Odpowiedzi:
final
można użyć do oznaczenia zmiennej jako „niezmiennej”
private final String name = "foo"; //the reference name can never change
final
może również uniemożliwić „nadpisanie” metody
public final String toString() { return "NULL"; }
final
może również sprawić, że klasa nie będzie „dziedziczona”. tj. klasa nie może być podklasą.
public final class finalClass {...}
public class classNotAllowed extends finalClass {...} // Not allowed
finally
jest używany w instrukcji try / catch do wykonywania kodu „zawsze”
lock.lock();
try {
//do stuff
} catch (SomeException se) {
//handle se
} finally {
lock.unlock(); //always executed, even if Exception or Error or se
}
Java 7 ma nową próbę z instrukcją zasobów , której można użyć do automatycznego zamykania zasobów, które jawnie lub niejawnie implementują java.io.Closeable lub java.lang.AutoCloseable
finalize
jest wywoływana, gdy obiekt jest odśmiecany. Rzadko trzeba to zmienić. Przykład:
protected void finalize() {
//free resources (e.g. unallocate memory)
super.finalize();
}
Object#finalize()
metoda była nieaktualna w Javie 9 ( JDK-8165641 ).
Ostatnie słowo kluczowe służy do deklarowania stałych.
final int FILE_TYPE = 3;
Słowo kluczowe last jest używane w instrukcji try catch do określenia bloku kodu do wykonania niezależnie od zgłoszonych wyjątków.
try
{
//stuff
}
catch(Exception e)
{
//do stuff
}
finally
{
//this is always run
}
I na koniec (haha), finalize im nie do końca pewien jest słowem kluczowym, ale w klasie Object istnieje funkcja finalize () .
http://allu.wordpress.com/2006/11/08/difference-between-final-finally-and-finalize/
final - stała deklaracja.
w końcu - blok Final jest zawsze wykonywany, gdy blok try kończy działanie, z wyjątkiem wywołania System.exit (0). Zapewnia to wykonanie ostatniego bloku, nawet jeśli wystąpi nieoczekiwany wyjątek. Ale w końcu jest przydatny nie tylko do obsługi wyjątków - pozwala programistom uniknąć przypadkowego obejścia kodu czyszczącego przez powrót, kontynuację lub przerwanie. Umieszczanie kodu porządkującego w bloku final jest zawsze dobrą praktyką, nawet jeśli nie przewiduje się żadnych wyjątków.
finalize () - metoda pomaga w usuwaniu elementów bezużytecznych. Metoda, która jest wywoływana, zanim obiekt zostanie odrzucony przez moduł odśmiecania pamięci, umożliwiając mu wyczyszczenie jego stanu. Nie powinno być używane do zwalniania zasobów niezwiązanych z pamięcią, takich jak uchwyty plików, gniazda, połączenia z bazą danych itp., Ponieważ Java ma tylko skończoną liczbę tych zasobów i nie wiesz, kiedy zostanie uruchomione czyszczenie pamięci, aby zwolnić te zasoby niezwiązane z pamięcią za pomocą metody finalize ().
Czy próbowałeś wyszukiwać w Google i potrzebujesz wyjaśnienia?
final: final to słowo kluczowe. Zmienna zadeklarowana jako ostateczna powinna zostać zainicjowana tylko raz i nie można jej zmienić. Nie można rozszerzać klas Java zadeklarowanych jako końcowe. Metody zadeklarowane jako ostateczne nie mogą zostać zastąpione.
wreszcie: wreszcie jest blokiem. Ostatni blok jest zawsze wykonywany, gdy blok try kończy działanie. Gwarantuje to, że ostatni blok zostanie wykonany, nawet jeśli wystąpi nieoczekiwany wyjątek. Ale w końcu jest przydatny nie tylko do obsługi wyjątków - pozwala programistom uniknąć przypadkowego pominięcia kodu czyszczącego przez powrót, kontynuację lub przerwanie. Umieszczanie kodu porządkującego w bloku final jest zawsze dobrą praktyką, nawet jeśli nie przewiduje się żadnych wyjątków.
finalize: finalize to metoda. Zanim obiekt zostanie wyrzucony bezużytecznie, system wykonawczy wywołuje jego metodę finalize (). Możesz napisać kod zwalniający zasoby systemowe w metodzie finalize () przed zebraniem elementów bezużytecznych.
1. Finał • Finał służy do ograniczenia klasy, metody i zmiennej. • Ostateczna klasa nie może być dziedziczona, ostateczna metoda nie może być nadpisana i nie można zmienić końcowej wartości zmiennej. • Zmienne końcowe są inicjalizowane w momencie tworzenia, z wyjątkiem przypadku pustej zmiennej końcowej, która jest inicjowana w Konstruktorze. • Finał to słowo kluczowe.
2. Wreszcie • Final jest używany do obsługi wyjątków razem z try and catch. • Zostanie wykonane niezależnie od tego, czy wyjątek jest obsługiwany, czy nie. • Ten blok jest używany do zamykania zasobów, takich jak połączenie z bazą danych, zasoby we / wy. • Wreszcie jest blokiem.
3. Finalizacja • Finalizacja jest wywoływana przez wątek wyrzucania elementów bezużytecznych tuż przed zebraniem kwalifikujących się obiektów w celu wykonania czyszczenia. • Jest to ostatnia szansa dla obiektu na wyczyszczenie, ale ponieważ nie ma gwarancji, że wywołanie finalize () jest złe, to zła praktyka polegająca na zatrzymywaniu zasobów do zakończenia wywołania. • Finalizacja to metoda.
Znaczenie finału w java jest następujące: -zastosowane do zmiennej oznacza, że po zainicjowaniu odpowiedniej zmiennej nie można już modyfikować
private final double numer = 12;
Jeśli spróbujesz zmodyfikować tę wartość, pojawi się błąd.
-applied to a method oznacza, że nie można przesłonić odpowiedniej metody
public final void displayMsg()
{
System.out.println("I'm in Base class - displayMsg()");
}
Ale ostatnią metodę można dziedziczyć, ponieważ słowo kluczowe final ogranicza przedefiniowanie metody.
-applied to a class oznacza, że odpowiednia klasa nie może zostać rozszerzona.
class Base
{
public void displayMsg()
{
System.out.println("I'm in Base class - displayMsg()");
}
}
Ostatecznie znaczenie jest:
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...");
}
}
w tym przykładzie, nawet jeśli try-catch jest wykonywany, czy nie, to, co jest w środku, będzie zawsze wykonywane. Znaczenie finalizacji:
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();
}}
przed wywołaniem Garbage Collectora.