>  기사  >  Java  >  C 구문과 Java 구문의 차이점

C 구문과 Java 구문의 차이점

(*-*)浩
(*-*)浩원래의
2019-11-19 11:27:224202검색

ㅋㅋㅋ

)C 구문과 Java 구문의 차이점C可用 标识符为数字、大小写字母、下划线,不能숫자로 시작하세요.

C에서 사용할 수 있는 세 가지 유형의 식별자 외에도 숫자로 시작할 수 없는 달러 기호($)가 하나 더 있습니다.

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) 기본 유형: 정수형(기본 정수형, 짧은 정수형 short [int] 및 긴 정수형 long [int], 부호 있는 유형 [signed], unsigned 유형 unsigned), 문자 유형 [ signed/unsigned ]char, 부동 소수점 유형(단정밀도 float, 배정밀도 double 및 long double), 열거형

2) 구성 유형: 배열 유형, 구조 유형, 공용체 유형3 ) 포인터 유형

4) Null 유형

注意下各类型一般所占字节数:
int: 2바이트

short: 2바이트 long: 4바이트

char: 1바이트

float: 4바이트

double: 8Byte

long double: 16바이트

char 유형을 제외하고, 위의 저장은 시스템에 따라 조금씩 다르지만 낮은 정밀도의 자릿수는 고정밀도의 숫자를 초과할 수 없습니다.

Java의 데이터 유형:

1) 기본 유형:

문자 유형(char), 숫자 유형(정수 유형(바이트 유형 byte, short 정수 유형 short, 정수 유형 int, long 정수 유형 long) , 부동 포인트형(단정밀도 float, 배정밀도 double)), 부울형(boolean(true 또는 false))

2) 복합형: 클래스, 인터페이스, 배열

각 유형의 저장 위치에 주의하세요. 바이트 수:

byte: 1바이트

short: 2바이트 int: 4바이트

long: 8바이트 char: 2바이트(유니코드 인코딩)

float: 4바이트 double: 8바이트

위 데이터 유형에 해당하는 저장 공간은 플랫폼과 무관하며 이 값으로 고정되어 있습니다.

4. 상수 및 변수

1) 상수

Java와 C의 정수 상수 정의는 끝에 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에서는 유니코드 인코딩 2바이트 저장 단위를 사용하여 유니코드 인코딩을 나타낼 때 u와 4자리 숫자를 나타낼 수 있습니다. 16진수 문자열이 사용됩니다.

Boolean 유형은 Java에서만 사용할 수 있으므로 특별한 주의가 필요합니다.

Java의 상수는 final 키워드로 수정되며, C에서는 변경할 수 없는 키워드가 const이고 수정하는 변수는 상수가 아니라 변수여야 합니다. 또한 #define으로 정의된 매크로 상수에는 유형이 없습니다.

2) 변수

Java와 C의 변수 정의는 기본적으로 동일합니다. 즉,

数据类型变量名[ = 变量初值];

변수에는 초기 값을 할당할 수도 있고 할당하지 않을 수도 있지만 Java에서는 긴 정수와 부동 소수점 숫자를 할당해야 합니다. 그 뒤에 해당 식별 표시(예: l, f)가 옵니다.

특별 참고 사항: 컴파일러가 다르기 때문에 C 선언 변수는 실행 가능한 명령문 앞에 배치되어야 합니다. 그렇지 않으면 컴파일 오류가 발생할 수 있습니다.

5. 논리 연산자 및 비트 연산자

C와 Java의 논리 연산자 &&, ||! 세 가지 유형이 있으며 동일한 의미를 갖습니다. 차이점은 C의 연산 결과는 0과 0이 아닌 반면 Java에서는 true 또는 false일 수 있다는 것입니다. Java에는 &, |, ^(XOR)도 있습니다. &와 &&, ||의 차이점은 전자가 비단축 연산자이고 후자가 단축 연산자라는 점입니다. & 뒤에, 그리고 && 앞에서 거짓이면, 후속 판단에 대해서는 || 이전에 참이면 후속 판단을 내리지 않습니다. ^는 둘 다 동일하고 거짓임을 의미합니다. C와 Java에서 사용할 수 있는 비트 연산자는 &, |, ^, ~(반전), 563671b7cd73253a189688ade1f9c7ee>(오른쪽 시프트)이며 그 의미는 기본적으로 동일합니다. C에서 음수의 오른쪽 시프트 연산은 시스템에 따라 다르지만(산술적 오른쪽 시프트일 수도 있고 논리적 오른쪽 시프트일 수도 있음), Java에서는 >>가 산술적 오른쪽 시프트, 즉 최상위 비트가 부호 비트로 채워집니다. Java의 논리적 오른쪽 시프트(부호 없는 오른쪽 시프트) 연산자는 >>>이며, 이는 보수 오른쪽 시프트를 사용하고 상위 비트에 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.