C 構文と Java 構文の違い:
1. 識別子:(推奨) 学習:java コース)
C で使用できる識別子は数字、大文字と小文字、およびアンダースコアであり、数字で始めることはできません;
利用可能な識別子Java では C を除く 3 つのタイプに加えて、ドル記号 ($) がもう 1 つありますが、これも数字で始めることはできません。
2. キーワード:
C のキーワード:
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
Java のキー 文字は:
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 データ型:
C のデータ型は次のとおりです:
1 )基本型:整数型(基本整数型 int、短整数型 short [int]、長整数型 long [int]、および符号付き型 [signed]、符号なし型 unsigned)、文字型 [signed/unsigned] char、浮動小数点型(単精度float、倍精度double、long double)、列挙型
2) 構築型:配列型、構造体型、共用体型
3) ポインタ型
4) Null 型
注意下各类型一般所占字节数:
int: 2 バイト
short: 2 バイト
long: 4 バイト
char: 1 バイト
float: 4 バイト
double: 8 バイト
long double: 16 バイト
char 型を除き、上記のストレージ型は、ストレージによって若干異なります。ただし、低精度の桁数が高精度の数値を超えることはできません。
Java のデータ型:
1) 基本型:文字型 (char)、数値型 (整数型 (バイト型 byte、短整数型、整数型 int、長整数型 long)、浮動小数点型 (単精度 float、倍精度 double))、ブール型 (boolean (true または false))
2) 複合type: class、interface、array
各タイプのストレージが占有するバイト数に注意してください:
byte: 1 byte
short: 2 バイト
int: 4 バイト
long: 8 バイト
char: 2 バイト (Unicode エンコーディング)
float: 4 バイト
double: 8 バイト
上記のデータ型に対応する記憶域はプラットフォームとは関係がなく、この値に固定されます。
4. 定数と変数
1) 定数
Java と C の整数定数の定義は同じです。 、long を除く最後に l または L を付加した整数データを除き、その他の型は数値を直接表示します。 C の符号なし定数の前には u または U が付きます。基数が異なる場合、10 進数は最上位ビットに 0 を含めることができないことを直接表示し、8 進数は 0 で始まり、16 進数は 0x または 0X で始まります。
浮動小数点型の場合、C と Java はどちらも 10 進数表現のみを使用できます。小数形式と指数形式が使用でき、指数形式で表現する場合は小数と指数をeまたはEで区切ります。 Java では区別するために、単精度の後に f または F が必要であり、倍精度の後に d または D が必要であることに注意してください。
文字定数は、単一の文字、または一重引用符で囲まれたエスケープ文字列で表されます。 C の文字型は 0 から 255 までの ASCII コードの文字のみを表現できるという事実に特別な注意を払う必要があります。Java では、Unicode エンコードの 2 バイト記憶ユニットを使用して特殊文字を表現できます。Unicode エンコードを表現する場合、 \u に加えて 4 桁の 16 進文字列が使用されます。
ブール型は Java でのみ使用できるため、特別な注意が必要です。
Java の定数は、キーワード Final で変更されますが、これは一度割り当てられると変更できません。C では、変更できないキーワードは const であり、それが変更する変数です (変数であることに注意してください) #define で定義されたマクロ定数には型がありません。初期値を代入してください。
2) 変数
Java と C の変数の定義は基本的に同じです。つまり、
数据类型变量名[ = 变量初值];
変数には初期値を割り当てることができます。かどうかはわかりませんが、Java では長整数と浮動小数点数の後に対応する識別記号 (l、f など) を続ける必要があります。
特記事項: コンパイラが異なるため、C 宣言変数は実行可能ステートメントの前に配置する必要があります。そうしないと、コンパイル エラーが発生する可能性があります。
5. 論理演算子とビット演算子
C と Java の両方の論理演算子 &&、||、!。 3 種類あり、意味は同じですが、C では演算結果が 0 または 0 以外であるのに対し、Java では true または false しか取り得ない点が異なります。 Javaには&、|、^(XOR)もありますが、&と&&、|、||の違いは前者が非ショートカット演算子、後者がショートカット演算子、つまり判定が先に行われる点です。 && 以降、&& 前が false の場合は判定なし、以降の判定は || の前後両方で判定、前が || の場合は以降の判定は行わない。 ^ は両方が同じで false であることを意味します。
C と Java の両方のビット演算子は、&、|、^、~ (反転)、<< (左シフト)、>> (右シフト) で、それらの意味は基本的に同じです。 。 C での負の数の右シフト演算はシステムによって異なります (算術右シフトまたは論理右シフトの場合があります) が、Java では、>> は算術右シフトを表します。つまり、最上位ビットは符号ビットで埋められます。 Java の論理右シフト (符号なし右シフト) 演算子は >>> で、2 の補数の右シフトを使用し、上位ビットに 0 を加算します。
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:静态函数。
以上がC 構文と Java 構文の違いの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。