Was ist der Unterschied zwischen Laufzeit und Kompilierzeit?
Antworten
Zu viele Anzeigen?Der Hauptunterschied zwischen Laufzeit und Kompilierzeit ist:
- Wenn es Syntaxfehler und Typüberprüfungen im Code gibt, wirft es einen Fehler zur Kompilierzeit, wohingegen zur Laufzeit: es überprüft nach der Ausführung des Codes. Zum Beispiel:
int a = 1 int b = a/0;
hier hat die erste Zeile kein Semikolon am Ende---> Kompilierzeitfehler nach Ausführung des Programms während der Ausführung von Operation b, das Ergebnis ist unendlich---> Laufzeitfehler.
- Zur Kompilierzeit wird nicht nach der Ausgabe der Funktionalität gesucht, die Ihr Code bietet, während dies zur Laufzeit erfolgt.
Wir können diese unter zwei verschiedenen breiten Gruppen statische Bindung und dynamische Bindung klassifizieren. Es basiert darauf, wann die Bindung mit den entsprechenden Werten erfolgt. Wenn die Verweise zur Kompilierzeit aufgelöst werden, dann handelt es sich um statische Bindung, und wenn die Verweise zur Laufzeit aufgelöst werden, handelt es sich um dynamische Bindung. Statische Bindung und dynamische Bindung werden auch als frühzeitige Bindung und späte Bindung bezeichnet. Manchmal werden sie auch als statische Polymorphismus und dynamischer Polymorphismus bezeichnet.
Joseph Kulandai.
Hier ist eine Erweiterung der Antwort auf die Frage "Unterschied zwischen Laufzeit und Kompilierzeit?" - Unterschiede in den Overheads im Zusammenhang mit Laufzeit und Kompilierzeit?
Die Laufzeitleistung des Produkts trägt zur Qualität bei, indem sie Ergebnisse schneller liefert. Die Kompilierzeitleistung des Produkts trägt zur Pünktlichkeit bei, indem sie den Editieren-Kompilieren-Debuggen-Zyklus verkürzt. Dennoch sind sowohl die Laufzeitleistung als auch die Kompilierzeitleistung sekundäre Faktoren für das Erreichen rechtzeitiger Qualität. Daher sollte man Leistungsverbesserungen zur Laufzeit und Kompilierzeit nur in Betracht ziehen, wenn sie durch Verbesserungen der Gesamtqualität und Pünktlichkeit des Produkts gerechtfertigt sind.
Eine gute Quelle für weiteres Lesen hier:
Schauen Sie sich dieses Beispiel an:
public class Test {
public static void main(String[] args) {
int[] x=new int[-5];//Kompilierungszeit kein Fehler
System.out.println(x.length);
}}
Der obige Code wird erfolgreich kompiliert, es gibt keinen Syntaxfehler, er ist vollkommen gültig. Aber zur Laufzeit wirft es folgenden Fehler.
Ausnahme in Thread "main" java.lang.NegativeArraySizeException
bei Test.main(Test.java:5)
Wie wenn zur Kompilierungszeit bestimmte Fälle überprüft wurden, danach zur Laufzeit bestimmte Fälle überprüft werden, sobald das Programm alle Bedingungen erfüllt, erhalten Sie eine Ausgabe. Andernfalls erhalten Sie einen Kompilierungszeit- oder Laufzeitfehler.
public class RuntimeVsCompileTime {
public static void main(String[] args) {
//test(new D()); COMPILETIME ERROR
/**
* Der Compiler weiß, dass B kein Instanz von A ist
*/
test(new B());
}
/**
* Der Compiler hat keinen Hinweis darauf, ob der tatsächliche Typ A, B oder C ist
* C c = (C)a; wird zur Laufzeit überprüft
* @param a
*/
public static void test(A a) {
C c = (C)a;//RUNTIME ERROR
}
}
class A{
}
class B extends A{
}
class C extends A{
}
class D{
}