1. Der Unterschied zwischen String, StringBuffer und StringBuilder
(empfohlene verwandte Tutorials: Java-Interviewfragen)
Der Wert von String ist unveränderlich, was dazu führt, dass jedes Mal, wenn eine Operation für String ausgeführt wird, ein neues String-Objekt generiert wird.
Objekte der Klassen StringBuffer und StringBuilder können mehrmals geändert werden, ohne dass neue nicht verwendete Objekte generiert werden
Die Geschwindigkeit beträgt: StringBuilder > StringBuffer > Die StringBuilder-Klasse und StringBuffer weisen darauf hin, dass die Methoden von StringBuilder nicht threadsicher sind.
Bilder ansehen:
(Empfohlenes Tutorial:
Java-Eingabeprogramm 2. Alle Alle Klassen erben von der Objektklasse. Welche direkten Unterklassen haben Sie verwendet?
ist ein spezieller Typ, der die Arbeit der Typklärung aufschiebt, bis das Objekt erstellt oder die Methode aufgerufen wird.
Parametrierter Typ, übergeben Sie den Typ als Parameter. Es handelt sich um ein Entwurfsmuster, das Polymorphismus sehr gut unterstützt, beispielsweise verschiedene Container.
Vorteile:
Laufzeitprobleme werden in den Kompilierungszeitraum vorverlagert, wodurch eine erzwungene Typkonvertierung vermieden wird.
4. Warum sollte serialversionUID für die Java-Objektserialisierung verwendet werden?1. Warum Objekte serialisieren
(1) Das Byte dauerhaft speichern Sequenz des Objekts auf die Festplatte, normalerweise in einer Datei
(2) Übertragen Sie die Bytesequenz des Objekts über das Netzwerk.
3. Warum SerialversionUID verwenden?
Wenn der Benutzer selbst keine SerialVersionUID deklariert, generiert die Schnittstelle standardmäßig eine SerialVersionUID. Wenn dem Objekt ein neues Feld hinzugefügt wird, wird die SerialversionUID zugewiesen Wird vom System geändert, was zu einer Deserialisierungsausnahme führt.
(Empfohlenes Video-Tutorial:
Java-Video-TutorialVor- und Nachteile von ReflectionVorteile
Reflection verbessert die Flexibilität und Skalierbarkeit von Java-Programmen, reduziert die Kopplung und verbessert die Anpassungsfähigkeiten. Es ermöglicht Programmen, Objekte jeder Klasse zu erstellen und zu steuern, ohne die fest codierte Zielklasse zu erhöhen.
Reflection ist in anderen häufig verwendeten Sprachen wie C, C++, Fortran oder Pascal nicht verfügbar.
Die Java-Reflektionstechnologie hat ein breites Anwendungsspektrum, wie z. B. Softwaretests, JavaBeans usw.
Viele beliebte Open-Source-Frameworks wie Struts, Hibernate und Spring nutzen diese Technologie in ihrer Implementierung.
2. Nachteile
(1) Leistung zuerst Leistungsaufwand
Reflection enthält einige dynamische Typen, sodass die JVM diese Codes nicht optimieren kann. Daher sind reflektierende Operationen viel weniger effizient als nicht reflektierende Operationen. Wir sollten die Verwendung von Reflektion in häufig ausgeführtem Code oder in Programmen mit hohen Leistungsanforderungen vermeiden.
(2) Sicherheitsbeschränkungen
Die Verwendung der Reflection-Technologie erfordert, dass das Programm in einer Umgebung ohne Sicherheitsbeschränkungen ausgeführt werden muss. Dies stellt ein Problem dar, wenn ein Programm in einer Umgebung mit eingeschränkter Sicherheit ausgeführt werden muss, beispielsweise in einem Applet. .
(3) Offenlegung von Interna
Da die Reflektion es dem Code ermöglicht, einige Vorgänge auszuführen, die unter normalen Umständen nicht zulässig sind (z. B. Zugriff auf private Eigenschaften und Methoden), kann die Verwendung der Reflektion zu unerwarteten Nebenwirkungen führen Effekte. Der Code weist funktionale Fehler auf, die die Portabilität beeinträchtigen. Reflektierender Code unterbricht die Abstraktion. Wenn sich also die Plattform ändert, kann sich auch das Verhalten des Codes ändern.
Das obige ist der detaillierte Inhalt vonSammlung klassischer Java-Interviewfragen (3). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!