Inhaltsverzeichnis
Statische Klassen und statische Methoden
Invertierter Index
Reflection
Mehrweg-Zusammenführungsalgorithmus
Aufzählungstyp
Multithreading
Heim Java javaLernprogramm Zusammenfassung oft vergessener Java-Interviewfragen

Zusammenfassung oft vergessener Java-Interviewfragen

Mar 23, 2017 am 10:43 AM

Statische Klassen und statische Methoden

Wenn eine Klasse als statisch deklariert werden soll, gibt es nur einen Fall, nämlich eine statische innere Klasse.

Statische innere Klassen sind eigentlich die gleichen wie gewöhnliche Klassen (d. h. Klassen der obersten Ebene, deren Klassennamen mit den Dateinamen identisch sein müssen), mit der Ausnahme, dass statische innere Klassen innerhalb einer bestimmten Klasse definiert sind Es handelt sich um Klassen. Wenn Sie sie verwenden möchten, müssen Sie sie instanziieren. Vom Konzept her unterscheiden sie sich von statischen Variablen und statischen Methoden. Lassen Sie sich nicht durch das Wort „statisch“ verwirren (denken Sie nicht, dass alle statischen Dinge direkt ohne Instanziierung verwendet werden können. Statische innere Klassen gibt es ist ein Unterschied) und es gibt nur statische innere Klassen, aber es gibt kein Konzept für statische Klassen (Klassen der obersten Ebene).

z.B.

public class Singleton{
    private Singleton(){}

    private static class SingletonHolder{
        private final static Singleton instance;
    }

    public Singleton getInstance(){
        return SingletonHolder.instance;
    }
}
Nach dem Login kopieren

Statische Methoden können nur auf statische Mitglieder zugreifen, Instanzmethoden können sowohl auf statische als auch auf Instanzmitglieder zugreifen. Der Grund, warum statische Methoden nicht auf Instanzmitgliedsvariablen zugreifen dürfen, liegt darin, dass Instanzmitgliedsvariablen zu einem bestimmten Objekt gehören und das Objekt nicht unbedingt vorhanden ist, wenn eine statische Methode ausgeführt wird. Das Schlüsselwort this kann in statischen Methoden nicht verwendet werden.

Invertierter Index

Invertierter Index

Es ist möglicherweise einfacher zu verstehen, wenn es in einen transponierten Index übersetzt wird, was einer Matrixtransponierung entspricht.

Invertierter Index ist eine Indexierungsmethode, die zum Speichern einer Zuordnung des Speicherorts eines Worts in einem Dokument oder einer Gruppe von Dokumenten im Rahmen einer Volltextsuche verwendet wird.

Reflection

ReflectionDer in der API bereitgestellte dynamische Proxy ist ebenfalls eine sehr leistungsstarke Funktion und kann die Methodenabfangfunktion in AOP nativ implementieren. Genau wie die Bedeutung des englischen Wortes „Reflection“ ist die Verwendung der Reflection-API so, als würde man die Reflektion einer Java-Klasse im Wasser betrachten. Nachdem Sie die interne Struktur einer Java-Klasse kennen, können Sie mit ihr interagieren, einschließlich der Erstellung neuer Objekte und dem Aufruf von Methoden in den Objekten.

Diese Interaktionsmethode hat den gleichen Effekt wie die Verwendung direkt im Quellcode, bietet jedoch zusätzliche Laufzeitflexibilität. Einer der größten Nachteile der Verwendung von Reflektion ist die schlechte Leistung. Für denselben Vorgang ist die Zeit, die für die Verwendung der Reflection-API erforderlich ist, wahrscheinlich ein oder zwei Größenordnungen langsamer als für die direkte Verwendung. In der aktuellen JVM-Implementierung wurde die Leistung von Reflexionsoperationen jedoch erheblich verbessert.

Die erste Hauptfunktion der Java Reflection API besteht darin, die interne Struktur des Programms zur Laufzeit abzurufen.

Mehrweg-Zusammenführungsalgorithmus

Merge-Sortierung ist ebenfalls ein effektiver Sortieralgorithmus, der mit der Divide-and-Conquer-Methode implementiert wurde. Er wurde 1990 von John von Neumann, dem Begründer der modernen Computer, erfunden 1945.

Zusammenführungssortierung ist eine stabile Sortierung und unter vielen Sortieralgorithmen sehr effizient. Gleichzeitig kann Zusammenführungssortierung nicht nur für die interne Sortierung, sondern auch für die externe Sortierung verwendet werden.

Die Idee der Zusammenführungssortierung ist wie folgt (am Beispiel der bidirektionalen Zusammenführung):

  • Teilen Sie das Array in zwei Unterarrays;

  • Sortieren Sie die beiden Wortarrays

  • Fügen Sie die beiden sortierten Wortarrays zusammen.

Bei der sogenannten N-Wege-Zusammenführung wird das Array in N Unterarrays aufgeteilt, das Array sortiert und dann zusammengeführt. Daher ist die bidirektionale Zusammenführung der allgemeinste Fall der Zusammenführungssortierung.

z.B.

Legende

def msort(array):
    length = len(array)
    if length == 1:
        return array
    else:
        mid = length / 2
        left = msort(array[0: mid])
        right = msort(array[mid: length])
        return merge(left, right)
Nach dem Login kopieren

Nicht rekursiv

def msort(array):
    length = len(array)
    step = 1
    while step < length:
        for left in range(0, length - step, 2 * step):
            result = merge(array[left:left + step],
                           array[left + step: min(left + 2 * step,
             length)])
            array = array[0:left] + result + array[min(left + 2 *
                                                       
           step, length)]
        step = step * 2
    return array
Nach dem Login kopieren
def merge(left, right):
    llen = len(left)
    lcur = 0
    rlen = len(right)
    rcur = 0
    result = []
    while lcur < llen and rcur < rlen:
        lone = left[lcur]
        rone = right[rcur]
        result.append(min(lone, rone))
        if lone < rone:
            lcur += 1
        else:
            rcur += 1
    result += left[lcur:]
    result += right[rcur:]
    return result
Nach dem Login kopieren

Aufzählungstyp

Aufzählungstyp

  • Aufzählungstyp unterstützt den Konstruktor von öffentlichen und geschützten Modifikatoren nicht, daher muss der Konstruktor privat sein oder freundlich. Aus diesem Grund kann das Aufzählungsobjekt im Programm nicht durch direkten Aufruf seines Konstruktors initialisiert werden.

  • Da der Wert des Aufzählungstyps tatsächlich durch ein zur Laufzeit erstelltes Objekt dargestellt wird, erstellt in der Clusterumgebung jede virtuelle Maschine ein synonymes Aufzählungsobjekt. Daher müssen Sie bei der Durchführung von Vergleichsoperationen darauf achten, dass diese scheinbar identischen Aufzählungswerte nicht gleich sind, da es sich nicht um dieselbe Objektinstanz handelt.

Multithreading

Es gibt zwei Möglichkeiten, Multithreading in Java zu implementieren: die Thread-Klasse zu erben und die Runnable-Schnittstelle zu implementieren, sofern es sich um Multithreading handelt. In der Programmentwicklung wird immer die Runnable-Schnittstelle implementiert, da die Implementierung der Runnable-Schnittstelle die folgenden Vorteile gegenüber der Erbung der Thread-Klasse bietet:

1. Dadurch können die durch Java verursachten Einschränkungen vermieden werden Einzelvererbungsfunktion;

2. Verbessern Sie die Robustheit des Programms, der Code kann von mehreren Threads gemeinsam genutzt werden und der Code und die Daten sind unabhängig

3. Geeignet für Situationen, in denen mehrere Threads vorhanden sind Bereiche desselben Programmcodes verarbeiten dieselbe Ressource.

Das Folgende ist ein Multithread-Programm, das durch Implementierung der Runnable-Schnittstelle implementiert wird. Der Code lautet wie folgt:

lass MyThread implements Runnable{  
    private int ticket = 5;  
    public void run(){  
        for (int i=0;i<10;i++)  
        {  
            if(ticket > 0){  
                System.out.println("ticket = " + ticket--);  
            }  
        }  
    }  
}  

public class RunnableDemo{  
    public static void main(String[] args){  
        MyThread my = new MyThread();  
        new Thread(my).start();  
        new Thread(my).start();  
        new Thread(my).start();  
    }  
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonZusammenfassung oft vergessener Java-Interviewfragen. 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

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

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)

Quadratwurzel in Java Quadratwurzel in Java Aug 30, 2024 pm 04:26 PM

Leitfaden zur Quadratwurzel in Java. Hier diskutieren wir anhand eines Beispiels und seiner Code-Implementierung, wie Quadratwurzel in Java funktioniert.

Perfekte Zahl in Java Perfekte Zahl in Java Aug 30, 2024 pm 04:28 PM

Leitfaden zur perfekten Zahl in Java. Hier besprechen wir die Definition, Wie prüft man die perfekte Zahl in Java?, Beispiele mit Code-Implementierung.

Zufallszahlengenerator in Java Zufallszahlengenerator in Java Aug 30, 2024 pm 04:27 PM

Leitfaden zum Zufallszahlengenerator in Java. Hier besprechen wir Funktionen in Java anhand von Beispielen und zwei verschiedene Generatoren anhand ihrer Beispiele.

Armstrong-Zahl in Java Armstrong-Zahl in Java Aug 30, 2024 pm 04:26 PM

Leitfaden zur Armstrong-Zahl in Java. Hier besprechen wir eine Einführung in die Armstrong-Zahl in Java zusammen mit einem Teil des Codes.

Weka in Java Weka in Java Aug 30, 2024 pm 04:28 PM

Leitfaden für Weka in Java. Hier besprechen wir die Einführung, die Verwendung von Weka Java, die Art der Plattform und die Vorteile anhand von Beispielen.

Smith-Nummer in Java Smith-Nummer in Java Aug 30, 2024 pm 04:28 PM

Leitfaden zur Smith-Zahl in Java. Hier besprechen wir die Definition: Wie überprüft man die Smith-Nummer in Java? Beispiel mit Code-Implementierung.

Fragen zum Java Spring-Interview Fragen zum Java Spring-Interview Aug 30, 2024 pm 04:29 PM

In diesem Artikel haben wir die am häufigsten gestellten Fragen zu Java Spring-Interviews mit ihren detaillierten Antworten zusammengestellt. Damit Sie das Interview knacken können.

Brechen oder aus Java 8 Stream foreach zurückkehren? Brechen oder aus Java 8 Stream foreach zurückkehren? Feb 07, 2025 pm 12:09 PM

Java 8 führt die Stream -API ein und bietet eine leistungsstarke und ausdrucksstarke Möglichkeit, Datensammlungen zu verarbeiten. Eine häufige Frage bei der Verwendung von Stream lautet jedoch: Wie kann man von einem Foreach -Betrieb brechen oder zurückkehren? Herkömmliche Schleifen ermöglichen eine frühzeitige Unterbrechung oder Rückkehr, aber die Stream's foreach -Methode unterstützt diese Methode nicht direkt. In diesem Artikel werden die Gründe erläutert und alternative Methoden zur Implementierung vorzeitiger Beendigung in Strahlverarbeitungssystemen erforscht. Weitere Lektüre: Java Stream API -Verbesserungen Stream foreach verstehen Die Foreach -Methode ist ein Terminalbetrieb, der einen Vorgang für jedes Element im Stream ausführt. Seine Designabsicht ist

See all articles