Unterschied: Java kann einen nicht-booleschen Wert nicht als booleschen Wert in einem logischen Ausdruck verwenden, C++ jedoch schon. C++ führt einen Mechanismus zum Überladen von Operatoren ein, den Java nicht unterstützt. C++ hat goto, Java nicht. In C++ gibt es Mehrfachvererbung und in Java nur Einzelvererbung, aber Java kann Mehrfachvererbung über Schnittstellen implementieren.
Die Betriebsumgebung dieses Tutorials: Windows7-System, C++17- und Java8-Version, Dell G3-Computer.
Der Unterschied zwischen C++ und Java:
Obwohl Java auf C++ basiert, ist Java im Vergleich dazu eine reinere objektorientierte Programmiersprache. In Java wird alles als Objekt behandelt.
1. Nachdem C++ ein Objekt erstellt hat, müssen Sie die Löschmethode aufrufen, um es nach der Verwendung zu zerstören. Java verfügt über einen Garbage-Collection-Mechanismus, der alle neuen Objekte überwacht, Objekte identifiziert, auf die nicht mehr verwiesen wird, und dann den Speicherplatz freigibt . .
2. Geltungsbereich (der Geltungsbereich von C, C++ und Java wird durch die Position der geschweiften Klammern bestimmt):
Der folgende Code ist jedoch in C und C++ zulässig, und in Java meldet der Compiler, dass die Variable zulässig ist definiert. Weil C und C++ Variablen mit größeren Bereichen ausblenden, Java dies jedoch nicht zulässt.
{ int x = 12; { int x = 96; } }
3. Standardwerte von Basismitgliedern
Wenn Variablen als Mitglieder einer Klasse verwendet werden, gibt Java nur Standardwerte an, um sicherzustellen, dass diese Mitgliedsvariablen von Basistypen initialisiert werden, C++ verfügt jedoch nicht über diese Funktion. Bei lokalen Variablen gibt der C++-Compiler eine Warnung aus und Java behandelt dies als Fehler.
4. Java kann keinen nicht-booleschen Wert als booleschen Wert in einem logischen Ausdruck verwenden, C++ jedoch.
Wenn in C++ der Wert eines Ausdrucks 0 ist, ist er falsch, und wenn er nicht 0 ist, ist er wahr.
Zum Beispiel:
if(1){ }
5. Verschiebungsoperator
Es gibt einen neuen „vorzeichenlosen“ Rechtsverschiebungsoperator (>>>), der „Null-Erweiterung“ verwendet, unabhängig davon, ob positiv oder negativ, alle Einfügungen 0 in den High-Bits. Dies ist in C und C++ nicht verfügbar.
6. C++ führt den Mechanismus zum Überladen von Operatoren ein, der von Java nicht unterstützt wird, aber Sie können Ihre eigenen überladenen Operatoren in C# implementieren.
7. Mit Java können wir jeden Basisdatentyp in andere Basisdatentypen konvertieren, mit Ausnahme boolescher Typen. [Empfohlene verwandte Video-Tutorials: Java-Video-Tutorials]
8 Java verfügt nicht über Sizeof(). In CC++ kann uns der Operator sizeof() die Anzahl der für ein Datenelement zugewiesenen Bytes mitteilen, da unterschiedliche Datentypen in C++ auf verschiedenen Computern unterschiedliche Größen haben können. Aber alle Datentypen in Java sind auf allen Maschinen gleich groß. (Zum Beispiel ist int in C++ 16 Bit auf 16-Bit-Maschinen, 32 Bit auf 32 und höher, long ist 32 Bit auf 32 Bit und darunter und 64 Bit auf 64 Bit.)
9. C++ hat goto, Java kein goto .
Java bietet einen ähnlichen Sprungmechanismus: Tags. Verwendungsbezeichnung: In
label1: outer-iteration{ inner-iteration{ break;(1) continue;(2) continue label1;(3) break label1;(4) } }
(1) unterbricht break die interne Iteration und kehrt zur externen Iteration zurück
(2), continue verschiebt den Ausführungspunkt zurück zum Anfang der internen Iteration.
(3), setze Label1 gleichzeitig mit der internen und externen Iteration fort, gehe direkt zu Label1 und setze dann die Iteration fort, beginnend mit der externen Iteration.
(4) break label1 unterbricht ebenfalls alle Iterationen und kehrt zu label1 zurück, tritt jedoch nicht erneut in die Iteration ein. Das heißt, beide Iterationen vollständig zu beenden.
10. Der Destruktor in C++ bietet die Möglichkeit, die vom Objekt belegten Ressourcen freizugeben, bevor es gelöscht wird, Java bietet jedoch keinen „Destruktor“ oder ein ähnliches Konzept. [Empfohlene verwandte Video-Tutorials: C++-Video-Tutorial]
In C++ werden Objekte definitiv zerstört (wenn das Programm keine Fehler aufweist);
In Java werden Objekte nicht immer durch Müll gesammelt. (Garbage Collection ist nicht gleichbedeutend mit „Zerstörung“)
11. Namensmaskierung
Wenn die Java-Basisklasse einen Methodennamen hat, der mehrfach überladen wurde, wird durch die Neudefinition des Methodennamens in der exportierten Klasse keine Version davon maskiert in der Basisklasse. Wenn C++ eine neue überladene Methode in einer Unterklasse einführen möchte, muss es die Basisklassenmethode abschirmen.
12. In C++ gibt es Mehrfachvererbung, in Java jedoch nur Einzelvererbung. Java kann Mehrfachvererbung über Schnittstellen implementieren.
13. Java ist halbinterpretiert und halbkompiliert und läuft langsamer als C++.
14. Java verfügt nicht über Struct oder Union
15 Die Verwendung grundlegender Datentypen ist in Java nicht möglich.
16. Array
Wenn in C++ ein Array definiert ist, wurde Speicherplatz zugewiesen und kann verwendet werden. (Geben Sie beim Definieren die Array-Größe an)
In Java definiert int arr[] beim Definieren des Arrays nur die Array-Variable wörtlich und das Array kann nicht verwendet werden. Erst nachdem das Array neu ist, wird das Array erstellt, Speicherplatz zugewiesen und steht zur Verwendung zur Verfügung. (Es ist illegal, die Array-Größe beim Definieren anzugeben und die Array-Größe beim Erstellen anzugeben.)
17 C++ verfügt über Zeiger, Java jedoch nicht.
18. Im Anhang finden Sie einen Vergleich der Hauptlängen von C++ in 32-Bit- und 64-Bit-Systemen:
Weitere Programmierkenntnisse finden Sie unter: Programmiervideo! !
Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen Java und C++?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!