Was ist der Syntaxunterschied zwischen Java und C?
1. Bezeichner:
C Verfügbare Bezeichner sind Zahlen, Groß- und Kleinbuchstaben sowie Unterstriche und dürfen nicht mit Zahlen beginnen : C-Sprach-Tutorial]
Zusätzlich zu den drei in C verfügbaren Arten von Bezeichnern verfügt Java über ein weiteres Dollarzeichen ($), das ebenfalls nicht mit einer Zahl beginnen kann. [Empfohlenes Lernen: Java-Kurs]
2. Schlüsselwörter:
Die Schlüsselwörter in C sind:
auto break case char const
continue default do double else
enum extern float for goto
if int long register return
short signiert sizeof static struct
switch typedef union unsigned void
volatile while
Die Schlüsselwörter in Java sind:
abstract boolean break byte case
catch char class continue default
do double else extensions false
final Finally float for if
implementiert import instanceof int interface
long native new Null-Paket
private protected public return short
dies löst transient true aus
versuchen Sie es mit einem statischen Super-Switch synchronisiert
void volatile while
3. Datentypen:
Die Datentypen in C sind:
Basistyp: Ganzzahl (Basis-Ganzzahltyp int, kurze Ganzzahl). Typ short[int] und long ganzzahliger Typ long [int], sowie vorzeichenbehafteter Typ [signed], vorzeichenloser Typ unsigned), Zeichentyp [signed/unsigned]char, Gleitkommatyp (einfache Genauigkeit float, doppelte Genauigkeit double und long). double precision long double), Aufzählungstyp
Konstruktionstyp: Array-Typ, Strukturtyp, Union-Typ
Zeigertyp
Leerer Typ
Beachten Sie die Anzahl der Bytes, die im Allgemeinen von jedem Typ belegt werden:
int: 2 Bytes
short: 2 Bytes
long: 4 Bytes
char: 1 Byte
float: 4 Bytes
double: 8 Bytes
long double: 16 Bytes
Zusätzlich zum Zeichentyp unterscheidet sich die oben genannte Speicherung je nach System geringfügig, die Anzahl der Ziffern mit niedriger Genauigkeit kann jedoch die hohe Genauigkeit nicht überschreiten.
Datentypen in Java:
Grundtypen: Zeichentyp (char), numerischer Typ (Ganzzahltyp (Bytetyp Byte, kurze Ganzzahl). Typ Short, Integer-Typ Int, Long Integer-Typ Long), Gleitkommatyp (Float mit einfacher Genauigkeit, Double mit doppelter Genauigkeit), Boolescher Typ (Boolescher Wert (wahr oder falsch))
Composite Typen: Klassen, Schnittstellen, Arrays
Beachten Sie die Anzahl der von jedem Speichertyp belegten Bytes:
Byte: 1 Byte
short: 2 Bytes
int: 4 Bytes
long: 8 Bytes
char: 2 Bytes (Unicode-Kodierung)
float: 4 Bytes
double: 8 Bytes
Der den oben genannten Datentypen entsprechende Speicherplatz hat nichts mit der Plattform zu tun und ist auf diesen Wert festgelegt.
4. Konstanten und Variablen
1) Konstanten
Die Definition von Ganzzahlkonstanten in Java und C ist dieselbe, mit Ausnahme von lange ganzzahlige Daten Mit Ausnahme des Hinzufügens von l oder L am Ende zeigen andere Typen numerische Werte direkt an. Vorzeichenlosen Konstanten in C wird ein u oder U vorangestellt. Für verschiedene Basen zeigt die Dezimalzahl direkt an, dass das höchste Bit nicht 0 enthalten darf, die Oktalzahl beginnt mit 0 und die Hexadezimalzahl beginnt mit 0x oder 0X.
Für Gleitkommatypen können sowohl C als auch Java nur die Dezimaldarstellung verwenden. Dezimalform und Exponentialform können verwendet werden. Wenn die Exponentialform ausgedrückt wird, werden Dezimalzahl und Exponent durch e oder E getrennt. Beachten Sie, dass Java zur Unterscheidung f oder F nach einfacher Genauigkeit und d oder D nach doppelter Genauigkeit benötigt.
Zeichenkonstanten werden durch ein einzelnes Zeichen oder eine in einfache Anführungszeichen eingeschlossene Escape-Zeichenfolge dargestellt. Beachten Sie insbesondere, dass der Zeichentyp in C nur Zeichen mit ASCII-Codes von 0 bis 255 darstellen kann. Java verwendet 2-Byte-Speichereinheiten mit Unicode-Kodierung, um Sonderzeichen darzustellen. Bei der Darstellung der Unicode-Kodierung werden u plus 4-stellige hexadezimale Zeichenfolgen verwendet.
Der Typ Boolean ist nur in Java verfügbar, daher ist besondere Aufmerksamkeit erforderlich.
Konstanten in Java werden mit dem Schlüsselwort final geändert, das nach der Zuweisung in C nicht geändert werden kann. Das Schlüsselwort, das nicht geändert werden kann, ist const und die Variable, die es ändert (beachten Sie, dass es sich um eine Variable handelt, nicht um eine Variable). Konstante) muss bei der Definition ein Anfangswert zugewiesen werden. Darüber hinaus haben mit #define definierte Makrokonstanten keinen Typ.
2) Variablen
Die Definitionen von Variablen in Java und C sind grundsätzlich gleich, das heißt:
数据类型变量名[ = 变量初值];
Variablen kann ein Anfangswert zugewiesen werden oder nicht, aber lange Ganzzahlen in Java und Das entsprechende Identifikationszeichen (z. B. l, f) muss nach der Gleitkommazahl hinzugefügt werden.
Besonderer Hinweis: Aufgrund von Unterschieden bei den Compilern müssen C-Deklarationsvariablen vor ausführbaren Anweisungen platziert werden, da sonst Kompilierungsfehler auftreten können.
5. Logische Operatoren und bitweise Operatoren
In C und Java sind drei logische Operatoren &&
, ||
und !
verfügbar Die gleiche Bedeutung besteht darin, dass das Operationsergebnis in C 0 oder nicht 0 ist, in Java jedoch nur wahr oder falsch sein kann. Es gibt auch &, |, ^ (XOR) in Java. Der Unterschied zwischen & und &&, | und || besteht darin, dass es sich bei ersterem um einen Verknüpfungsoperator handelt, d und nach &, und wenn vor && falsch, wird kein Urteil gefällt. Wenn || vorher und nachher wahr ist, wird kein Urteil gefällt. ^ bedeutet, dass beide gleich und falsch sind.
Die in C und Java verfügbaren bitweisen Operatoren sind: &
, |
, ^
, ~(取反)
, <<(左移)
, >>(右移)
, mit grundsätzlich derselben Bedeutung. Die Rechtsverschiebung negativer Zahlen in C unterscheidet sich je nach System (es kann eine arithmetische Rechtsverschiebung oder eine logische Rechtsverschiebung sein), während >> in Java eine arithmetische Rechtsverschiebung darstellt, d. h. das höchste Bit mit dem Vorzeichenbit gefüllt. Der logische Rechtsverschiebungsoperator (vorzeichenlose Rechtsverschiebung) in Java ist >>>, der eine komplementäre Rechtsverschiebung verwendet und 0 zum High-Bit hinzufügt.
PS: Aufmerksame Leser werden möglicherweise feststellen, dass das Ausgabeergebnis nach Verwendung der Methode >>> für die vorzeichenlose Rechtsverschiebung bei der Definition einer negativen Bytezahl oder eines Kurztyps -5 beträgt . Dem oben Gesagten zufolge sollte das Hinzufügen von 0 zur oberen Position eine positive Zahl sein. Der Typ int oder long ist keine negative Zahl. Warum ist das so? Ich denke, das liegt daran, dass der niedrigste Datentyp, den Java beim Ausführen von >>>-Operationen verwendet, der Typ int ist, was dazu führt, dass die Daten höherer Ordnung alle 1 sind (die im Computer gespeicherten Daten werden also im Zweierkomplement gespeichert). negatives Byte oder Short Der Typ wird in den Typ int konvertiert und die High-Bits werden vollständig mit 1 gefüllt. Beim Verschieben wird die letzte 1 in den High-Bits auf das erste Bit in den Low-Bits verschoben und dann in den Datentyp abgefangen Wir haben (Byte oder Short) definiert, sodass die Zahl, die wir sehen, immer noch eine negative Zahl ist. Hier können wir erkennen, dass wir beim Ausführen von >-Operationen an Byte- und Kurztypdaten möglicherweise nicht den gewünschten Wert erhalten. Seien Sie also vorsichtig.
6. Array
Die Definition eines Arrays in C lautet wie folgt:
类型说明符数组名[常量表达式];
Die Definition kann gleichzeitig mit dem durchgeführt werden Initialisierung, wie zum Beispiel: int a[10] = {0,1,2,3,4,5,6,7,8,9};
in Klammern Die Konstanten können weggelassen werden.
Es gibt zwei Möglichkeiten, Arrays in Java zu definieren:
数据类型数组名[]; //或 数据类型 []数组名;
Definition und Initialisierung können gleichzeitig erfolgen, wie zum Beispiel: int []a = {0,1,2,3,4,5,6,7,8,9};
Hinweis: Falls vorhanden ist in Java kein Array, wenn es definiert ist. Zum Initialisieren müssen Sie bei der Initialisierung zuerst Speicher zuweisen, das heißt:
数组名 = new 数据类型[常量表达式];
Sie können auch gleichzeitig mit der Definition Speicher zuweisen:
数据类型数组名[] = new 数据类型[常量表达式];
Weder C noch Java unterstützen Arrays variabler Länge, referenziert auf It’s all 数组名[下标]
die ganze Zeit. Der Unterschied ist:
Der Indexbereich von Java ist 0~Array-Länge-1. Wenn er nicht in diesem Bereich liegt, wird eine Array-Index-Ausnahme außerhalb der Grenzen ausgelöst und der gültige Bereich von C ist ebenfalls 0~Array-Länge-1, es wird jedoch kein Fehler gemeldet, wenn der Index diesen Grenzwert überschreitet.
In einem mehrdimensionalen Array sind die Array-Elemente in Zeilen angeordnet.
Noch etwas zu beachten: Wenn ein Array in C ohne Initialisierung definiert wird, sind die Array-Elementwerte unvorhersehbar, während in Java das Array einen Standardwert hat, wenn Speicher ohne Initialisierung zugewiesen wird Wert.
7. Anweisungen
Es gibt keinen großen Unterschied zwischen C- und Java-Anweisungen, hauptsächlich:
1) C direkt beim Aufrufen von Methoden /functions Beim Aufrufen einer Funktion oder beim Aufrufen einer Methode in Java muss der Objektname vor dem Methodennamen hinzugefügt werden.
2) In C ist es möglich, dass zwei verschachtelte zusammengesetzte Anweisungen gleichzeitig Variablen mit demselben Namen definieren, in Java jedoch nicht.
Das obige ist der detaillierte Inhalt vonWas ist der Unterschied in der Syntax zwischen Java und C?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!