


Detaillierte 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)
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.
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ültigenVariablen 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; } }
Wenn der Compiler die folgende Anweisung kompilieren möchte:
basiert sie auf dem übergebenen Parameter, der ein < ist 🎜> 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 }
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
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; } }
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!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



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

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

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.

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

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.

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

Anleitung zum TimeStamp to Date in Java. Hier diskutieren wir auch die Einführung und wie man Zeitstempel in Java in ein Datum konvertiert, zusammen mit Beispielen.

Kapseln sind dreidimensionale geometrische Figuren, die aus einem Zylinder und einer Hemisphäre an beiden Enden bestehen. Das Volumen der Kapsel kann berechnet werden, indem das Volumen des Zylinders und das Volumen der Hemisphäre an beiden Enden hinzugefügt werden. In diesem Tutorial wird erörtert, wie das Volumen einer bestimmten Kapsel in Java mit verschiedenen Methoden berechnet wird. Kapselvolumenformel Die Formel für das Kapselvolumen lautet wie folgt: Kapselvolumen = zylindrisches Volumenvolumen Zwei Hemisphäre Volumen In, R: Der Radius der Hemisphäre. H: Die Höhe des Zylinders (ohne die Hemisphäre). Beispiel 1 eingeben Radius = 5 Einheiten Höhe = 10 Einheiten Ausgabe Volumen = 1570,8 Kubikeinheiten erklären Berechnen Sie das Volumen mithilfe der Formel: Volumen = π × R2 × H (4
