lock.lock();
try {
//do stuff
} catch (SomeException se) {
//handle se
} finally {
lock.unlock(); //always executed, even if Exception or Error or se
}
„Final” oznacza, że czegoś nie można zmienić. Zwykle chcesz użyć tego na zmiennych statycznych, które będą miały tę samą wartość przez cały okres użytkowania programu.
„Wreszcie” jest używane w połączeniu z blokiem try / catch. Cokolwiek wewnątrz klauzuli „last” zostanie wykonane niezależnie od tego, czy kod w bloku „try” zgłosi wyjątek, czy nie.
JVM wywołuje „Finalize”, zanim obiekt zostanie wyrzucony do pamięci.
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?
Witamy w Stack Overflow! Chociaż ten artykuł może faktycznie odpowiedzieć na to pytanie, lepiej byłoby zawrzeć tutaj zasadnicze części odpowiedzi i podać link do odniesienia. Przepełnienie stosu jest tak przydatne, jak jego pytania i odpowiedzi, a jeśli ten host bloga przestanie działać lub adresy URL zostaną przeniesione, ta odpowiedź stanie się bezużyteczna. Dzięki!
sarnold
6
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.
Odpowiedzi:
finał
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” metodypublic 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
Wreszcie
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
sfinalizować
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(); }
źródło
Object#finalize()
metoda była nieaktualna w Javie 9 ( JDK-8165641 ).źródło
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 () .
źródło
http://allu.wordpress.com/2006/11/08/difference-between-final-finally-and-finalize/
Czy próbowałeś wyszukiwać w Google i potrzebujesz wyjaśnienia?
źródło
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.
źródło
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.
źródło
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.
źródło