Heim Java javaLernprogramm Detaillierte Beispiele der beiden Konzepte der Java-Ausführung, -Kompilierung und -Operation

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

May 05, 2017 pm 03:05 PM

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
Nach dem Login kopieren

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

 }

}
Nach dem Login kopieren

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;
 }
}
Nach dem Login kopieren
: 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 < 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
}
Nach dem Login kopieren

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;
 } 
}
Nach dem Login kopieren
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 dem Login kopieren

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!

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)
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Chat -Befehle und wie man sie benutzt
1 Monate 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)

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.

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

Zeitstempel für Datum in Java Zeitstempel für Datum in Java Aug 30, 2024 pm 04:28 PM

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.

Java -Programm, um das Kapselvolumen zu finden Java -Programm, um das Kapselvolumen zu finden Feb 07, 2025 am 11:37 AM

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

See all articles