Quelle est la différence de syntaxe entre java et c ?
1. Identifiant :
C Les identifiants disponibles sont des chiffres, des lettres majuscules et minuscules, des traits de soulignement et ne peuvent pas commencer par des chiffres [Tutoriel recommandé ; : Tutoriel du langage C]
En plus des trois types d'identifiants disponibles en C, Java a un signe dollar supplémentaire ($), qui ne peut pas non plus commencer par un chiffre. [Apprentissage recommandé : cours java]
2. Mots-clés :
Les mots-clés en C sont :
auto break case char const
continue default do double else
enum extern float for goto
if int long register return
short signé sizeof static struct
switch typedef union unsigned void
volatile while
Les mots-clés en Java sont :
abstract boolean break byte case
catch char class continue default
do double else extends false
finalfinally float for if
implémente import instanceof int interface
long native new paquet nul
retour public privé protégé court
cela renvoie un vrai transitoire
essayez le super commutateur statique synchronisé
void volatile while
3. Types de données :
Les types de données en C sont :
Type de base : entier (type entier de base int, entier court tapez short[int] et long type entier long [int], ainsi que type signé [signed], type non signé non signé), type de caractère [signed/unsigned]char, type à virgule flottante (float simple précision, double précision double et long double précision long double), type énumération
Type de construction : type tableau, type structure, type union
Type pointeur
Type vide
Notez le nombre d'octets généralement occupés par chaque type :
int : 2 octets
court : 2 octets
long : 4 octets
char : 1 octet
float : 4 octets
double : 8 octets
long double : 16 octets
En plus du type de caractère, le stockage ci-dessus est légèrement différent selon le système, mais le nombre de chiffres de faible précision ne peut pas dépasser la haute précision.
Types de données en Java :
Types de base : type de caractère (char), type numérique (type entier (type d'octet octet, entier court type court, type entier int, type long entier long), type à virgule flottante (flottant simple précision, double précision double)), type booléen (booléen (vrai ou faux))
Composite types : classes, interfaces, tableaux
Notez le nombre d'octets occupés par chaque type de stockage :
octet : 1 octet
short : 2 octets
int : 4 octets
long : 8 octets
char : 2 octets (codage Unicode)
float : 4 octets
double : 8 octets
L'espace de stockage correspondant aux types de données ci-dessus n'a rien à voir avec la plateforme et est fixé à cette valeur.
4. Constantes et variables
1) Constantes
La définition des constantes entières en Java et C est la même, à l'exception de données entières longues À l'exception de l'ajout de l ou L à la fin, d'autres types affichent directement les valeurs numériques. Les constantes non signées en C sont précédées de u ou U. Pour différentes bases, le mode décimal affiche directement que le bit le plus élevé ne peut pas contenir 0, le mode octal commence par 0 et le mode hexadécimal commence par 0x ou 0X.
Pour les types à virgule flottante, C et Java ne peuvent utiliser que la représentation décimale. La forme décimale et la forme exponentielle peuvent être utilisées. Lorsque la forme exponentielle est exprimée, la décimale et l'exposant sont séparés par e ou E. Notez que Java nécessite que f ou F soient ajoutés après une simple précision, et que d ou D soient ajoutés après une double précision pour distinguer.
Les constantes de caractère sont représentées par un caractère unique ou une chaîne d'échappement entourée de guillemets simples. Notez en particulier que le type de caractère en C ne peut représenter que des caractères avec des codes ASCII compris entre 0 et 255. Java utilise des unités de stockage de codage Unicode sur 2 octets pour représenter les caractères spéciaux. Lors de la représentation du codage Unicode, u plus des chaînes hexadécimales à 4 chiffres sont utilisées.
Le type booléen n'est disponible qu'en Java, une attention particulière est donc requise.
Les constantes en Java sont modifiées avec le mot-clé final, qui ne peut pas être modifié une fois attribué ; en C, le mot-clé qui ne peut pas être modifié est const, et la variable qu'il modifie (notez qu'il s'agit d'une variable, pas d'une constante) doit se voir attribuer une valeur initiale lors de sa définition. De plus, les constantes macro définies avec #define n'ont pas de type.
2) Variables
Les définitions des variables en Java et C sont fondamentalement les mêmes, c'est-à-dire :
数据类型变量名[ = 变量初值];
Les variables peuvent se voir attribuer une valeur initiale ou non, mais en Entiers longs Java et La marque d'identification correspondante (telle que l, f) doit être ajoutée après le nombre à virgule flottante.
Remarque spéciale : en raison des différences entre les compilateurs, les variables de déclaration C doivent être placées avant les instructions exécutables, sinon des erreurs de compilation peuvent survenir.
5. Opérateurs logiques et opérateurs au niveau du bit
Il existe trois opérateurs logiques &&
, ||
et !
disponibles en C et Java, et ont la même signification. La différence est que le résultat de l'opération en C est 0 ou non 0, mais en Java, il ne peut être que vrai ou faux. Il existe également &, |, ^ (XOR) en Java. La différence entre & et &&, || est que le premier est un opérateur non-raccourci et le second est un opérateur de raccourci, c'est-à-dire que les jugements sont effectués avant. et après &, et si faux avant &&, aucun jugement n'est effectué pour le jugement ultérieur, |juge à la fois avant et après. Si || est vrai avant, il ne rend pas le jugement ultérieur. ^ signifie que les deux sont identiques et faux.
Les opérateurs au niveau du bit disponibles en C et Java sont : &
, |
, ^
, ~(取反)
, <<(左移)
, >>(右移)
, avec fondamentalement la même signification. L'opération de décalage à droite des nombres négatifs en C varie en fonction du système (il peut s'agir d'un décalage arithmétique à droite ou d'un décalage logique à droite), tandis qu'en Java, >> représente un décalage arithmétique à droite, c'est-à-dire que le bit le plus élevé est rempli du bit de signe. L'opérateur logique de décalage à droite (décalage à droite non signé) en Java est >>>, qui utilise le complément de décalage à droite et ajoute 0 au bit haut.
PS : les lecteurs attentifs peuvent constater que si vous définissez un nombre négatif d'octets ou un type court, tel que -10, le résultat de sortie après avoir utilisé la méthode >>> D'après ce qui précède, l'ajout de 0 à la position haute devrait être un nombre positif. Le type int ou long ne sera pas un nombre négatif. Pourquoi ? Je pense que cela est dû au fait que le type de données le plus bas utilisé par Java lors de l'exécution d'opérations >>> est le type int, ce qui fait que les données d'ordre supérieur sont toutes à 1 (les données stockées dans l'ordinateur sont stockées en complément à deux, donc octet négatif ou court Le type est converti en type int et les bits de poids fort sont entièrement remplis de 1). Lors du décalage, le dernier 1 des bits de poids fort est déplacé vers le premier bit des bits de poids faible, puis intercepté dans le type de données. nous avons défini (octet ou court), donc le nombre que nous voyons est toujours un nombre négatif. De là, nous pouvons voir que lors de l'exécution d'opérations > sur des données d'octets et de type court, nous risquons de ne pas obtenir la valeur souhaitée, alors soyez prudent.
6. Tableau
La définition du tableau en C est la suivante :
类型说明符数组名[常量表达式];
La définition peut être effectuée en même temps que la initialisation, comme : int a[10] = {0,1,2,3,4,5,6,7,8,9};
entre parenthèses Les constantes peuvent être omises.
Il existe deux manières de définir des tableaux en Java :
数据类型数组名[]; //或 数据类型 []数组名;
La définition et l'initialisation peuvent être effectuées en même temps, par exemple : int []a = {0,1,2,3,4,5,6,7,8,9};
Remarque : s'il y a il n'y a pas de tableau en Java lorsqu'il est défini Pour initialiser, vous devez d'abord allouer de la mémoire lors de l'initialisation, soit :
数组名 = new 数据类型[常量表达式];
Vous pouvez également allouer de la mémoire en même temps que la définition :
数据类型数组名[] = new 数据类型[常量表达式];
Ni C ni Java ne prennent en charge les tableaux de longueur variable, référencés It's all 数组名[下标]
all the time. La différence est la suivante :
La plage d'indices de Java est 0~longueur du tableau-1. Si elle n'est pas dans cette plage, une exception hors limites de l'indice de tableau sera levée et la plage valide de. C vaut également 0 ~ longueur du tableau-1, mais aucune erreur ne sera signalée si l'indice dépasse cette limite.
Dans les tableaux multidimensionnels, les éléments du tableau sont disposés en lignes.
Encore une chose à noter : si un tableau est défini en C sans initialisation, les valeurs des éléments du tableau sont imprévisibles, tandis qu'en Java, lorsque la mémoire est allouée sans initialisation, le tableau a une valeur par défaut valeur.
7. Déclarations
Il n'y a pas beaucoup de différence entre les instructions C et Java, principalement :
1) C directement lors de l'appel des méthodes. /functions Lors de l'appel d'une fonction, lors de l'appel d'une méthode en Java, le nom de l'objet doit être ajouté avant le nom de la méthode.
2) Il est possible que deux instructions composées imbriquées définissent des variables portant le même nom en même temps en C, mais pas en Java.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!