Heim  >  Artikel  >  Java  >  Der Unterschied zwischen „final“, „finally“ und „finalize“ in Java

Der Unterschied zwischen „final“, „finally“ und „finalize“ in Java

王林
王林Original
2024-02-19 12:16:221222Durchsuche

Der Unterschied zwischen „final“, „finally“ und „finalize“ in Java

Der Unterschied zwischen „final“, „final“ und „finalize“ in Java erfordert spezifische Codebeispiele.

Bei der Java-Programmierung stoßen Sie häufig auf die drei Schlüsselwörter „final“, „final“ und „finalize“. und Nutzung. In diesem Artikel werden die Unterschiede zwischen diesen drei Schlüsselwörtern ausführlich erläutert und Codebeispiele gegeben, um den Lesern ein besseres Verständnis zu erleichtern.

1. Schlusswort
Das Schlusswort kann für Klassen, Methoden und Variablen verwendet werden. Seine Funktion besteht darin, die geänderte Klasse, Methode oder Variable unveränderlich zu machen.

  1. endgültige Klasse:
    Die endgültige modifizierte Klasse bedeutet, dass die Klasse nicht vererbt werden kann, dh ihre Unterklassen können nicht existieren.

Beispielcode:

final class A {
    // class implementation
}

// 以下代码会报错,无法继承final类A
class B extends A {
    // class implementation
}
  1. endgültige Methode:
    Die endgültige modifizierte Methode bedeutet, dass die Methode nicht von Unterklassen überschrieben werden kann.

Beispielcode:

class A {
    final void foo() {
        // method implementation
    }
}

class B extends A {
    @Override
    void foo(){  //以下代码会报错,无法重写final方法
        // method implementation
    }
}
  1. endgültige Variable:
    endgültige geänderte Variable bedeutet, dass der Wert der Variablen nicht geändert werden kann, das heißt, es ist eine Konstante. Endgültige Variablen können bei der Deklaration oder im Konstruktor initialisiert werden.

Beispielcode:

class A {
    final int x = 10;  //声明时初始化
    
    final int y;
    A(){
        y = 20;  //在构造方法中初始化
    }
}

class B {
    void foo() {
        final int z = 30;  //局部变量,必须在声明时初始化
        // method implementation
    }
}

2. Schlüsselwort „Finally“
Das Schlüsselwort „final“ wird häufig in Try-Catch-finally-Anweisungsblöcken verwendet, um sicherzustellen, dass der Code im „finally“-Block unabhängig davon ausgeführt wird, ob eine Ausnahme auftritt. Der „finally“-Block wird normalerweise verwendet, um Ressourcen freizugeben oder notwendige Aufräumarbeiten durchzuführen.

Beispielcode:

try {
    // 可能发生异常的代码
}
catch (Exception e) {
    // 异常处理逻辑
}
finally {
    // 最终执行的代码,无论是否发生异常,都会执行
    // 释放资源或者其他清理工作
}

3. Finalize-Methode
Die finalize()-Methode ist die Garbage-Collection-Methode eines Objekts. Der Garbage Collector ruft diese Methode auf, bevor das Objekt vom Garbage Collector recycelt wird. Diese Methode wird normalerweise verwendet, um zugrunde liegende Ressourcen freizugeben, die sich auf das Objekt beziehen. Es kann jedoch nicht garantiert werden, dass die Methode finalize() rechtzeitig ausgeführt wird. Daher wird nicht empfohlen, diese Methode zum Freigeben wichtiger Ressourcen zu verwenden.

Beispielcode:

class A {
    // 对象的垃圾回收方法
    protected void finalize() throws Throwable {
        // 释放与对象相关的底层资源
        super.finalize();
    }
}

public static void main(String[] args) {
    A obj = new A();
    obj = null;  // 将对象置为null,让垃圾回收器回收
    System.gc();  // 手动触发垃圾回收
}

Zusammenfassend lässt sich sagen, dass die drei Schlüsselwörter „final“, „finally“ und „finalize“ in Java unterschiedliche Bedeutungen und Verwendungen haben. final wird zum Ändern von Klassen, Methoden und Variablen verwendet und zeigt an, dass sie unveränderlich sind. Final wird in Try-Catch-Finally-Anweisungsblöcken verwendet, um sicherzustellen, dass der darin enthaltene Code unabhängig davon ausgeführt wird, ob die Methode finalize() auftritt ist die Garbage Collection eines Objekts. Methode, die aufgerufen wird, bevor das Objekt recycelt wird. Das Verständnis ihrer Unterschiede und der korrekten Verwendung ist sehr hilfreich, um qualitativ hochwertigen und leicht zu wartenden Java-Code zu schreiben.

Das obige ist der detaillierte Inhalt vonDer Unterschied zwischen „final“, „finally“ und „finalize“ in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn