Heim Java JavaInterview Fragen Interviewer: Bitte erläutern Sie ausführlich die Rolle des endgültigen Schlüsselworts und seinen Unterschied zum statischen Schlüsselwort

Interviewer: Bitte erläutern Sie ausführlich die Rolle des endgültigen Schlüsselworts und seinen Unterschied zum statischen Schlüsselwort

Mar 08, 2021 am 10:27 AM
final static 关键字 面试

Interviewer: Bitte erläutern Sie ausführlich die Rolle des endgültigen Schlüsselworts und seinen Unterschied zum statischen Schlüsselwort

Vorwort:

Wie erwartet stellte der Interviewer im letzten Interview noch einmal diese Frage: Könnten Sie mir bitte die spezifische Bedeutung des letzten Schlüsselworts mitteilen und seine Rolle im Detail sowie den Unterschied zwischen ihm und Static erläutern? Damit jeder Interviewpartner auf diese Frage aufmerksam wird, sind die Antworten speziell für Sie als Referenz zusammengestellt.

1. Die Bedeutung des Schlüsselworts final

Die Oberflächenbedeutung von final ist unveränderlich und konstant; ähnlich wie das Schlüsselwort const in der C-Sprache bezieht es sich auf eine Größe, die nicht geändert werden kann, was sich von der statischen Skalarstatik unterscheidet Ja, statische Variablen beziehen sich nur auf einen Speicherplatz und der Wert kann geändert werden. Der Grund für die Verwendung von „final“ liegt in der Perspektive des Software-Designs, denn wenn andere das Schlüsselwort „final“ sehen, wissen sie, was es bedeutet, und erzielen den Effekt, es zu verstehen. Dies liegt jedoch genau an der Existenz dieser „Semantik“. Sie müssen bei der Programmierung vorsichtig sein, um Missbrauch zu vermeiden.

In Java sind endgültige Änderungen Konstanten und Variablennamen müssen großgeschrieben werden.

Math-Klasse: public static final double E = 2.7182818284590452354; public static final double PI = 3.14159265358979323846;
...Es gibt viele Variablen in der Java-Quelle code Sie werden alle mit final

2 geändert. Die Rolle von final

final hat je nach Änderungsposition unterschiedliche Rollen:

(1) Die durch final geänderten Variablen müssen initialisiert und zugewiesen werden Es handelt sich um einen Anfangswert, der später nicht mehr neu zugewiesen werden kann.

Hinweis: Lokale Variablen fallen nicht in den Rahmen unserer Diskussion, da lokale Variablen selbst einen Gültigkeitsbereich haben und nicht durch Wörter wie privat und öffentlich geändert werden.

(2) Modifizierte Methode. Die durch final geänderte Methode bedeutet, dass sie nicht neu geschrieben werden kann.

(3) Geänderte Klassen, durch final geänderte Klassen können nicht vererbt werden.

Hinweis: Bei einer endgültig modifizierten Klasse werden alle Mitgliedsmethoden in der Klasse implizit als endgültige Methoden bezeichnet.

2.1. Durch final geänderte Variablen müssen explizit initialisiert werden: 1) Initialisierung beim Definieren, 2) Festlegen des Werts im Konstruktor, 3) in einem nicht statischen Block . Die letzte Instanzvariable legt den Wert fest.

Endgültige geänderte Variable bedeutet: Diese Variable kann nach der Initialisierung nicht geändert werden. Die Bedeutung „unveränderlich“ bedeutet hier, dass ihr Wert für Basistypen unveränderlich ist und für Objektvariablen ihre Referenz unveränderlich ist, das heißt, sie kann nicht auf andere verweisen Objekte. Objekt.

public class Test01{    
    final int x1= 10000;    
    final int x2;    
    final int x3;
    {
       x2 = 20000;
        }
    Public exe3(){        
        this.x3 = 3000;
        }
}
Nach dem Login kopieren

Wenn die durch final geänderte Variable ein Objekttyp ist, bedeutet „unveränderbar“, dass die Variable nicht auf andere Objekte verweisen kann, aber der Wert des Objekts geändert werden kann, wie zum Beispiel:

final Operate operate = new Operate() ;// operate有一个普通变量i初始化为10operate.i = 11;
operate.i = 12;
System.out.println(operate.i); //输出12上述是自定义类,即便是数组,List等集合类型,所保存的值也是可以更改的。
Nach dem Login kopieren

3 Der Unterschied zwischen final und static

static wirkt sich auf Mitgliedsvariablen aus, um anzuzeigen, dass nur eine Kopie gespeichert wird, während final verwendet wird, um sicherzustellen, dass Variablen unveränderlich sind. Schauen Sie sich online ein Beispiel an:

public class Test {
    public static void main(String[] args)  {
        MyClass myClass1 = new MyClass();
        MyClass myClass2 = new MyClass();
        System.out.println(myClass1.i);
        System.out.println(myClass1.j);
        System.out.println(myClass2.i);
        System.out.println(myClass2.j);
 
    }
}
class MyClass {
    public final double i = Math.random();
    public static double j = Math.random();
}
//运行结果,两次打印,j的值都是一样的,j是static类型的属于类,因此两次值相同。i不是static的因此属于对象,但是i的值是不可变的。
Nach dem Login kopieren

(Lernvideo-Sharing:

Java-Video-Tutorial

)

4. Andere finalbezogene Kenntnisse

(1) Verwenden Sie das Schlüsselwort final. Wenn der Compiler den Wert einer Variablen während der Kompilierungsphase bestimmen kann, verwendet der Compiler die Variable als Konstante zur Kompilierungszeit. Wenn dies zur Laufzeit ermittelt werden muss, optimiert der Compiler den entsprechenden Code nicht.

public class Test {    
    public static void main(String[] args)  {
        String a = "hello2";  
        final String b = "hello";
        String d = "hello";
        String c = b + 2;  
        String e = d + 2;
        System.out.println((a == c));
        System.out.println((a == e));
    }
}
    //final类型,在编译阶段能够确定值。
    //非final类型在编译阶段确定不了
    输出:
        true
        false
    public class Test {    
            public static void main(String[] args)  {
            String a = "hello2";  
            final String b = getHello();
            String c = b + 2;  
            System.out.println((a == c));
 
        }     
    public static String getHello() {        
        return "hello";
    }
}
//即便是final类型,编译阶段也确定不了值。输出false
Nach dem Login kopieren

(2) Achten Sie darauf, „final“ nicht mit „finally“, „finalize()“ usw. zu verwechseln.

(3) Durch die Deklaration von Klassen, Methoden und Variablen als endgültig kann die Leistung verbessert werden, sodass die JVM die Möglichkeit hat, Schätzungen vorzunehmen und diese dann zu optimieren.

(4) Die Variablen in der Schnittstelle sind alle öffentliche statische Endvariablen.

Verwandte Empfehlungen:

Fragen und Antworten zu Java-Interviews

Originallink: http://www.cnblogs.com/liun1994/p/6691094.html

Originalautor: Suifenglangzi90

Das obige ist der detaillierte Inhalt vonInterviewer: Bitte erläutern Sie ausführlich die Rolle des endgültigen Schlüsselworts und seinen Unterschied zum statischen Schlüsselwort. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Lassen Sie uns darüber sprechen, wie Sie das beste Node.js-Docker-Image auswählen. Lassen Sie uns darüber sprechen, wie Sie das beste Node.js-Docker-Image auswählen. Dec 13, 2022 pm 08:00 PM

Die Auswahl eines Docker-Images für Node mag trivial erscheinen, aber die Größe und potenziellen Schwachstellen des Images können erhebliche Auswirkungen auf Ihren CI/CD-Prozess und Ihre Sicherheit haben. Wie wählen wir also das beste Node.js-Docker-Image aus?

Der Unterschied zwischen „final', „finally' und „finalize' in Java Der Unterschied zwischen „final', „finally' und „finalize' in Java Feb 19, 2024 pm 12:16 PM

Der Unterschied zwischen „final“, „final“ und „finalize“ in Java erfordert spezifische Codebeispiele. In der Java-Programmierung stoßen Sie häufig auf die drei Schlüsselwörter „final“, „final“ und „finalize“. 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. Schlüsselwort final Das Schlüsselwort final kann für Klassen, Methoden und Variablen verwendet werden. Seine Funktion besteht darin, die geänderte Klasse zu erstellen

Wie lassen sich domänenübergreifende Probleme lösen? Eine kurze Analyse gängiger Lösungen Wie lassen sich domänenübergreifende Probleme lösen? Eine kurze Analyse gängiger Lösungen Apr 25, 2023 pm 07:57 PM

Domänenübergreifend ist ein Szenario, das in der Entwicklung häufig vorkommt und auch ein häufig in Interviews diskutiertes Thema ist. Die Beherrschung gängiger domänenübergreifender Lösungen und der dahinter stehenden Prinzipien kann nicht nur unsere Entwicklungseffizienz verbessern, sondern auch in Vorstellungsgesprächen bessere Leistungen erbringen.

Ist es in Java möglich, eine Konstante nur mit dem Schlüsselwort final zu definieren? Ist es in Java möglich, eine Konstante nur mit dem Schlüsselwort final zu definieren? Sep 20, 2023 pm 04:17 PM

Eine konstante Variable ist eine Variable, deren Wert fest ist und von der im Programm nur eine Kopie vorhanden ist. Sobald Sie eine konstante Variable deklariert und ihr einen Wert zugewiesen haben, können Sie ihren Wert im gesamten Programm nicht mehr ändern. Im Gegensatz zu anderen Sprachen unterstützt Java Konstanten nicht direkt. Sie können jedoch weiterhin eine Konstante erstellen, indem Sie eine Variable als „statisch“ und „final“ deklarieren. Statisch – Sobald Sie eine statische Variable deklarieren, werden diese zur Kompilierungszeit in den Speicher geladen, d. h. es ist nur eine Kopie verfügbar. Final – Sobald Sie eine Final-Variable deklariert haben, kann ihr Wert nicht mehr geändert werden. Daher können Sie in Java eine Konstante erstellen, indem Sie die Instanzvariable als statisch und endgültig deklarieren. Beispiel-DemonstrationsklasseData{&am

Eingehende Analyse der Rolle und Verwendung des statischen Schlüsselworts in der C-Sprache Eingehende Analyse der Rolle und Verwendung des statischen Schlüsselworts in der C-Sprache Feb 20, 2024 pm 04:30 PM

Eingehende Analyse der Rolle und Verwendung des Schlüsselworts „static“ in der Sprache C. In der Sprache C ist „static“ ein sehr wichtiges Schlüsselwort, das bei der Definition von Funktionen, Variablen und Datentypen verwendet werden kann. Die Verwendung des Schlüsselworts static kann die Linkattribute, den Umfang und den Lebenszyklus des Objekts ändern. Lassen Sie uns die Rolle und Verwendung des Schlüsselworts static in der C-Sprache im Detail analysieren. Statische Variablen und Funktionen: Variablen, die mit dem Schlüsselwort static innerhalb einer Funktion definiert werden, werden als statische Variablen bezeichnet, die einen globalen Lebenszyklus haben

Ein Artikel zum Verständnis des Singleton-Musters in JavaScript Ein Artikel zum Verständnis des Singleton-Musters in JavaScript Apr 25, 2023 pm 07:53 PM

Das JS-Singleton-Muster ist ein häufig verwendetes Entwurfsmuster, das sicherstellt, dass eine Klasse nur eine Instanz hat. Dieser Modus wird hauptsächlich zur Verwaltung globaler Variablen verwendet, um Namenskonflikte und wiederholtes Laden zu vermeiden. Außerdem kann er die Speichernutzung reduzieren und die Wartbarkeit und Skalierbarkeit des Codes verbessern.

Sammlung von Interviewfragen zum Golang-Framework Sammlung von Interviewfragen zum Golang-Framework Jun 02, 2024 pm 09:37 PM

Das Go-Framework besteht aus einer Reihe von Komponenten, die die integrierten Bibliotheken von Go erweitern und vorgefertigte Funktionen bereitstellen (z. B. Webentwicklung und Datenbankoperationen). Zu den beliebten Go-Frameworks gehören Gin (Webentwicklung), GORM (Datenbankoperationen) und RESTful (API-Verwaltung). Middleware ist ein Interceptor-Muster in der HTTP-Anforderungsverarbeitungskette und wird verwendet, um Funktionen wie Authentifizierung oder Anforderungsprotokollierung hinzuzufügen, ohne den Handler zu ändern. Die Sitzungsverwaltung verwaltet den Sitzungsstatus durch die Speicherung von Benutzerdaten. Sie können gorilla/sessions zum Verwalten von Sitzungen verwenden.

Ausgewählte Java JPA-Interviewfragen: Testen Sie Ihre Beherrschung des Persistenz-Frameworks Ausgewählte Java JPA-Interviewfragen: Testen Sie Ihre Beherrschung des Persistenz-Frameworks Feb 19, 2024 pm 09:12 PM

Was ist JPA? Wie unterscheidet es sich von JDBC? JPA (JavaPersistence API) ist eine Standardschnittstelle für objektrelationales Mapping (ORM), die es Java-Entwicklern ermöglicht, vertraute Java-Objekte zum Betreiben von Datenbanken zu verwenden, ohne SQL-Abfragen direkt in die Datenbank schreiben zu müssen. JDBC (JavaDatabaseConnectivity) ist die Standard-API von Java für die Verbindung mit Datenbanken. Sie erfordert, dass Entwickler SQL-Anweisungen verwenden, um die Datenbank zu betreiben. JPA kapselt JDBC, bietet eine bequemere und übergeordnete API für die objektrelationale Zuordnung und vereinfacht Datenzugriffsvorgänge. Was ist in JPA eine Entität? juristische Person

See all articles