Maison  >  Article  >  Java  >  La différence entre la syntaxe C et la syntaxe Java

La différence entre la syntaxe C et la syntaxe Java

(*-*)浩
(*-*)浩original
2019-11-19 11:27:224146parcourir

La différence entre la syntaxe C et la syntaxe Java

La différence entre la syntaxe c et la syntaxe java :

Identifiant : ( recommandé) Étude : cours java)

Les identifiants disponibles en C sont des chiffres, des lettres majuscules et minuscules, et des traits de soulignement, et ne peuvent pas commencer par des chiffres

Les identifiants disponibles ; en Java, sauf C. En plus des trois types, il existe un autre signe dollar ($), qui ne peut pas non plus commencer par un nombre.

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   signed    sizeof    static   struct
switch   typedef    union    unsigned   void
volatile   while

Mots-clés en Java Les caractères sont :

abstract   boolean    break    byte   case
catch   char    class    continue   default
do   double    else    extends   false
final   finally    float    for   if
implements    import   instanceof    int    interface
long   native    new    null   package
private   protected    public    return   short
this   throw    throws    transient   true
try   static    super    switch   synchronized
void   volatile    while

3. Types de données :

Les types de données en C sont :

1) Les types de base : type entier (type entier de base, type entier court short [int] et type entier long long [int], ainsi que type signé [signed], type non signé non signé), type de caractère [signé/non signé] char, type à virgule flottante (flotteur simple précision, double précision double et double long), type énumération

2) Type de construction : type tableau, type structure, type union

3) Type pointeur

4) Type nul

注意下各类型一般所占字节数:

int : 2 octets

court : 2 octets

long : 4 octets

caractère : 1 octet

float : 4 octets

double : 8 octets

long double : 16 octets

À l'exception du type char, les types de stockage ci-dessus sont légèrement différents selon le système, mais le nombre de chiffres de faible précision ne peut pas dépasser le nombre de haute précision.

Types de données en Java :

1) Types de base : Type de caractère (char), type numérique (type entier (type d'octet) octet , type entier court, type entier int, type entier long long), type à virgule flottante (flottant simple précision, double précision double)), type booléen (booléen (vrai ou faux))

2) Types composites : 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 (encodage 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 , sauf pour long À l'exception des données entières avec l ou L ajouté à la fin, les 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 une constante) doit être définie lors de sa définition, attribuez une valeur initiale et 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 un premier valeur ou non, mais en Java, les entiers longs et les nombres à virgule flottante doivent être suivis des marques d'identification correspondantes (telles que l, f).

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

Opérateurs logiques &&, ||, à la fois en C et en Java ! Il existe trois types, et ils ont la même signification. La différence est que le résultat de l'opération en C est 0 et non 0, alors qu'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 : &, |, ^, ~ (inversion), efeec4fbbda8e981f683f3d8fe08b7dd> . 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:有心的读者可能会发现,如果你定义了一个byte或者short类型的负数,如-10,采用>>>方法进行无符号右移后输出的结果是-5,按照上面说的高位添0应该是正数。而int或long类型的就不会是负数,这是为什么呢?

我认为这是因为Java在进行>>>运算时采用的最低数据类型是int类型,导致高位数据全为1(计算机内存储的数据是以补码存储的,所以负数的byte或short类型转成int类型高位全填充1),移位时高位的最后一个1移到低位的第一位,然后截取成我们定义的数据类型(byte或short),所以我们看到的数还是负数。从这里我们可以看出,在byte和short类型的数据做>>>运算的时候可能得不到我们想要的值,千万注意。

6、数组

C中数组的定义如下:

类型说明符数组名[常量表达式];

定义可与初始化同时进行,如:int a[10] = {0,1,2,3,4,5,6,7,8,9};中括号内的常量可以省略。

Java中数组定义有两种方式:

数据类型 数组名[];或
数据类型 []数组名;

定义和初始化可同时进行,如:int []a = {0,1,2,3,4,5,6,7,8,9};

注意Java中数组如果在定义时没有进行初始化,在进行初始化的时候需要先分配内存,即:

数组名 = new 数据类型[常量表达式];

也可在定义同时进行内存分配:

数据类型数组名[] = new 数据类型[常量表达式];

C和Java都不支持变长数组,引用的时候都是 数组名[下标]。区别是:Java的下标范围为0~数组长度-1,不在该范围会抛出数组下标越界异常,而C有效范围也是0~数组长度-1,但下标超出此界不会报错。

多维数组中,数组元素都是按行排列的。

还有一点要注意:C中定义数组不进行初始化则数组元素值是不可预知的,而Java中分配内存而不进行初始化数组中是有默认值的。

7、语句

C和Java语句区别不大,主要是:

1)方法/函数调用时C直接调用函数,Java调用方法时方法名前面要加对象名。

2)C中两个嵌套的复合语句同时定义同名变量是可以的,而Java不可以。

8、类、域、方法和全局变量、函数

1)类是C中没有的,Java中类定义如下:

[修饰符] class 类名[extends 父类名][implements 接口名]
{
//类体
}

其中修饰符可以为以下一个或多个访问修饰符:

abstract:抽象类。

final:最终类。

public:公共类。

2)域(成员变量)和全局变量类比:

Java中域的定义如下:

[修饰符] 类型 成员变量名;

修饰符可选以下一个或多个关键字:

public:公共成员。

protected:本类或同一个包的其他类以及其它包该类的子类可访问。

private:私有成员。

final:常量,确定后不能改变。

static:静态变量。

transient:临时变量。

volatile:备份变量。

各类型成员变量默认初始化为:

整型变量:0

浮点型变量:0.0

布尔型变量:false

字符型变量:空格

类变量:null

C中全局变量定义同一般变量:

[存储类别] 数据类型 变量表列;

其中存储类别可选:

auto:自动变量,当不申明存储类别时隐式默认该值。

static:静态变量。

register:寄存器变量。

extern:外部变量。

3)方法和函数类比:

Java中方法的定义如下:

[修饰符] 返回类型 方法名([参数表列])
{
//方法体
}

修饰符可选以下一个或多个:

public:公共方法。

protected:本类或同一个包的其他类以及其它包该类的子类可访问。

private:私有方法。

abstract:抽象方法,只有方法头没有方法体。

static:静态方法。

C中函数的定义如下:

[存储类别] [数据类型] 函数名([形参表列]) 
{
//函数体
}

存储类别可选:

extern:外部函数。

static:静态函数。

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn