suchen
HeimJavajavaLernprogrammDetaillierte Beispiele der beiden Konzepte der Java-Ausführung, -Kompilierung und -Operation

Dieser Artikel bietet eine detaillierte Erklärung der Kompilierungszeit und Laufzeit von Java-Programmen anhand von Beispielen. Freunde, die sie benötigen, können darauf zurückgreifen.

Java-Kompilierungszeit und -Laufzeit sind sehr wichtige Konzepte, die jedoch nicht klargestellt wurden Diesmal. Spezieller Blog, um über das Verständnis von Konzepten zu schreiben.

Grundlegende Konzepte

Kompilierungszeit

Kompilierungszeit Wie der Name schon sagt, handelt es sich um Kompilierungszeit. Was bedeutet also, dass der Compiler Ihnen hilft, den Quellcode in Code zu übersetzen, den die Maschine erkennen kann? Tatsächlich kann es nur in einen bestimmten Zwischenzustand übersetzt werden. Beispielsweise verfügt Java nur über Bytecode, der von der JVM erkannt wird. Darüber hinaus gibt es Linker und Assembler, die wir zusammenfassen können Nennen Sie es einen Compiler)

Dann ist das Kompilieren ein einfacher Vorgang. Einige Übersetzungsarbeiten, z. B. die Überprüfung, ob Sie versehentlich falsche Schlüsselwörter geschrieben haben, sind vorhanden Wie ein Lehrer, der prüft, ob der Aufsatz eines Schülers Tippfehler und falsche Sätze enthält. Manchmal wird Ihnen der Fehler-Compiler sagen, dass die Speicherzuweisung während der Kompilierung definitiv falsch ist Laufzeit

Der sogenannte laufende Code wird in den Speicher geladen (Ihr Code ist tot, wenn er auf der Festplatte gespeichert und nicht in den Speicher geladen wird. Es wird erst lebendig, wenn es im Speicher ausgeführt wird. Die Typprüfung zur Laufzeit unterscheidet sich von der zuvor erwähnten statischen
Typprüfung des Codes besteht darin, einige Operationen und Beurteilungen im Speicher durchzuführen (Auf diese Weise können viele Dinge beim Kompilieren nicht erkannt werden. Beim Ausführen können Fehler gefunden werden. Es ist am besten, diesen logischen Fehler beim Schreiben zu vermeiden.) Wenn Sie sich das ansehen Code, Sie werden wissen, dass es sich um einen falschen Code handelt. Es wird jedoch kein Fehler gemeldet, wenn der Compiler ausgeführt wird Dumm, und es ist nicht so klar wie dein Verstand. Du denkst also, dass der Compiler zwar ein bisschen dumm ist, es aber nicht so schlimm ist, wenn du beim Ausführen Fehler findest.

Interviewfragen

A. Im Code von Zeile A wird der Wert des Produkts zur Kompilierungszeit berechnet, während Zeile B zur Laufzeit berechnet wird. Wenn Sie einen Java-Decompiler (z. B. jd-gui) verwenden, um die Datei „ConstantFolding.class“ zu dekompilieren, erhalten Sie die Antwort aus den folgenden Ergebnissen.

int arr[] = {1,2,3}; 
int result = arr[4]; 
System.out.println(result); 
Exception in thread “main” java.lang.ArrayIndexOutOfBoundsException: 4

Konstante Faltung ist eine Optimierungstechnik

, die vom Java-Compiler verwendet wird. Da sich die Werte der endgültigen

Variablen nicht ändern, können sie optimiert werden. Der Java-Decompiler und der Befehl javap sind beide leistungsstarke Tools zum Anzeigen von kompiliertem Code (z. B. Bytecode).

理解这几个概念可以更好地帮助你去了解一些基本的原理。下面是初学者晋级中级水平需要知道的一些问题。 
Q.下面的代码片段中,行A和行B所标识的代码有什么区别呢?

public class ConstantFolding {

 static final int number1 = 5;

 static final int number2 = 6;

 static int number3 = 5;

 static int number4= 6;

 public static void main(String[ ] args) {

 int product1 = number1 * number2; //line A

 int product2 = number3 * number4; //line B

 }

}

Methodenüberladung

public class ConstantFolding
{
 static final int number1 = 5;
 static final int number2 = 6;
 static int number3 = 5;
 static int number4 = 6;

 public static void main(String[ ] args)
 {
 int product1 = 30;
 int product2 = number3 * number4;
 }
}
: Dies geschieht zur Kompilierungszeit. Das Überladen von Methoden wird auch als Polymorphismus zur Kompilierungszeit bezeichnet, da der Compiler basierend auf dem Typ des Arguments auswählen kann, welche Methode verwendet werden soll.

Wenn der Compiler die folgende Anweisung kompilieren möchte:

basiert sie auf dem übergebenen Parameter, der ein Zeichenfolge Konstante, generiert Bytecode für den Aufruf von Methode Nr. 1Methodenüberschreibung:

Dies geschieht zur Laufzeit. Das Überladen von Methoden wird als Laufzeitpolymorphismus bezeichnet, da der Compiler zur Kompilierungszeit nicht weiß und auch nicht wissen kann, welche Methode er aufrufen soll. Die JVM trifft Entscheidungen, während der Code ausgeführt wird.
public class {
 public static void evaluate(String param1); // method #1
 public static void evaluate(int param1); // method #2
}

Die Methode „compute(..)“ in Unterklasse B überschreibt die Methode „compute(..)“ der übergeordneten Klasse. Wenn der Compiler auf den folgenden Code stößt:

1evaluate(“My Test Argument passed to param1”);
Der Compiler kann nicht wissen, ob der Typ der übergebenen Parameterreferenz A oder B ist. Daher kann die Entscheidung, Methode #3 oder Methode # aufzurufen, nur zur Laufzeit basierend auf dem Typ des

-Objekts

getroffen werden, das der -Eingabevariablen „Referenz“ zugewiesen ist (z. B. eine Instanz von A oder B) 4

Generika (auch Typprüfung genannt): Dies geschieht zur Kompilierungszeit. Der Compiler ist dafür verantwortlich, die Richtigkeit der Typen im Programm zu überprüfen und dann den Code, der Generika verwendet, in nicht generischen Code zu übersetzen oder umzuschreiben, der auf der aktuellen JVM ausgeführt werden kann. Diese Technik wird „Type Erasure“ genannt.

public class A {
 public int compute(int input) { //method #3
 return 3 * input;
 } 
}

public class B extends A {
 @Override
 public int compute(int input) { //method #4
 return 4 * input;
 } 
}
Mit anderen Worten: Der Compiler löscht alle Typinformationen in spitzen Klammern, um die Kompatibilität mit JRE Version 1.4.0 oder früher sicherzustellen.

public int evaluate(A reference, int arg2) {
 int result = reference.compute(arg2);
}

Nach der Kompilierung wird daraus:

Ausnahme: Sie können eine Laufzeitausnahme verwenden oder eine Ausnahme zur Kompilierungszeit.

RuntimeException wird auch als ungeprüfte Ausnahme bezeichnet, was bedeutet, dass diese Ausnahme vom Compiler nicht erkannt werden muss.

RuntimeException ist die übergeordnete Klasse aller Ausnahmen, die zur Laufzeit ausgelöst werden können. Zusätzlich zum Abfangen von Ausnahmen kann eine Methode bei der Ausführung 1List myList = new ArrayList(10); auslösen.

Eine Unterklasse von RuntimeException, dann muss keine Throw-Anweisung verwendet werden, um die ausgelöste Ausnahme zu deklarieren.

Zum Beispiel: NullPointerException, ArrayIndexOutOfBoundsException usw.

Geprüfte Ausnahmen werden vom Compiler zur Kompilierungszeit durch throws-Anweisungen oder den try {}cathch{}-Anweisungsblock überprüft um Erkennungsausnahmen zu behandeln. Der Compiler analysiert, welche Ausnahmen beim Ausführen einer Methode oder eines Konstruktors ausgelöst werden.

[Verwandte Empfehlungen]

1. Kostenloses Java-Video-Tutorial

2. Alibaba Java-Entwicklungshandbuch

3. JAVA-Anfänger-Video-Tutorial

Das obige ist der detaillierte Inhalt vonDetaillierte Beispiele der beiden Konzepte der Java-Ausführung, -Kompilierung und -Operation. 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

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)
1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Crossplay haben?
1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

MinGW – Minimalistisches GNU für Windows

MinGW – Minimalistisches GNU für Windows

Dieses Projekt wird derzeit auf osdn.net/projects/mingw migriert. Sie können uns dort weiterhin folgen. MinGW: Eine native Windows-Portierung der GNU Compiler Collection (GCC), frei verteilbare Importbibliotheken und Header-Dateien zum Erstellen nativer Windows-Anwendungen, einschließlich Erweiterungen der MSVC-Laufzeit zur Unterstützung der C99-Funktionalität. Die gesamte MinGW-Software kann auf 64-Bit-Windows-Plattformen ausgeführt werden.

PHPStorm Mac-Version

PHPStorm Mac-Version

Das neueste (2018.2.1) professionelle, integrierte PHP-Entwicklungstool

DVWA

DVWA

Damn Vulnerable Web App (DVWA) ist eine PHP/MySQL-Webanwendung, die sehr anfällig ist. Seine Hauptziele bestehen darin, Sicherheitsexperten dabei zu helfen, ihre Fähigkeiten und Tools in einem rechtlichen Umfeld zu testen, Webentwicklern dabei zu helfen, den Prozess der Sicherung von Webanwendungen besser zu verstehen, und Lehrern/Schülern dabei zu helfen, in einer Unterrichtsumgebung Webanwendungen zu lehren/lernen Sicherheit. Das Ziel von DVWA besteht darin, einige der häufigsten Web-Schwachstellen über eine einfache und unkomplizierte Benutzeroberfläche mit unterschiedlichen Schwierigkeitsgraden zu üben. Bitte beachten Sie, dass diese Software

Sicherer Prüfungsbrowser

Sicherer Prüfungsbrowser

Safe Exam Browser ist eine sichere Browserumgebung für die sichere Teilnahme an Online-Prüfungen. Diese Software verwandelt jeden Computer in einen sicheren Arbeitsplatz. Es kontrolliert den Zugriff auf alle Dienstprogramme und verhindert, dass Schüler nicht autorisierte Ressourcen nutzen.

VSCode Windows 64-Bit-Download

VSCode Windows 64-Bit-Download

Ein kostenloser und leistungsstarker IDE-Editor von Microsoft