>  기사  >  Java  >  java와 c의 구문 차이점은 무엇입니까?

java와 c의 구문 차이점은 무엇입니까?

青灯夜游
青灯夜游원래의
2019-11-15 15:26:512808검색

java와 c의 구문 차이점은 무엇입니까?

Java와 C의 구문 차이는 무엇인가요?

1 식별자:

C에서 사용할 수 있는 식별자는 숫자, 대문자, 소문자, 밑줄이며 숫자로 시작할 수 없습니다. [권장 튜토리얼: C 언어 튜토리얼]

Java는 C의 세 가지 유형 외에 달러 기호($)가 하나 더 있는데 역시 숫자로 시작할 수 없습니다. [추천 학습: java 강좌]

2. 키워드:

C의 키워드는 다음과 같습니다.

auto break case char const

continue default do double else

enum ex tern float for goto

if int long Register return

정적 구조체의 짧은 부호 있는 크기

switch typedef Union unsigned void

휘발성 while

Java의 키워드는 다음과 같습니다.

abstract boolean break byte case

catch char 클래스 계속 기본값

do double else false를 확장

final은 if

import int 인터페이스 구현

long 네이티브 새 null 패키지

private protected public return short

에 대해 최종적으로 부동화됩니다.

3. 데이터 유형:

C의 데이터 유형은 다음과 같습니다.

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

구성 유형: 배열 유형, 구조 유형, 공용체 유형
  1. 포인터 유형
  2. 빈 유형
  3. 각 유형은 일반적으로 바이트 수를 차지합니다.
  4. int: 2단어 섹션

  5. short: 2바이트

long: 4바이트

문자 : 1byte

float: 4byte

double: 8byte

long double: 16byte

위의 char을 제외한 저장공간 다른 시스템은 그 종류를 제외하면 약간씩 다르지만 정밀도가 낮은 자릿수를 초과할 수 없다. 정밀도가 높은 것.

Java의 데이터 유형:

기본 유형: 문자 유형(char), 숫자 유형(정수 유형(바이트 유형 byte, short 정수 유형 short, 정수 유형 int, long 정수 유형 long), float Point 유형 (단정밀도 부동 소수점, 배정밀도 배정밀도)), 부울 유형(부울(true 또는 false))


복합 유형: 클래스, 인터페이스, 배열
  1. 각 저장소 유형이 차지하는 바이트에 유의하세요. 숫자:
  2. byte: 1바이트

  3. 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의 상수는 C에서 한 번 할당되면 변경할 수 없는 final 키워드로 수정되며, 변경할 수 없는 키워드는 const이고 수정하는 변수는 상수가 아니라 변수여야 합니다. 정의할 때 초기값을 지정하고, # 정의로 정의된 매크로 상수에는 유형이 없습니다.

2) 변수

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

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

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

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

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

논리 연산자 &&, ||, 는 C 및 Java에서 사용할 수 있습니다! 세 가지 유형이 있으며 동일한 의미를 갖습니다. 차이점은 C의 연산 결과는 0과 0이 아닌 반면 Java에서는 true 또는 false일 수 있다는 것입니다. Java에는 &, |, ^(XOR)도 있습니다. &와 &&, ||의 차이점은 전자가 비단축 연산자이고 후자가 단축 연산자라는 점입니다. & 뒤에, 그리고 && 앞에서 거짓이면, 후속 판단에 대해서는 || 이전에 참이면 후속 판단을 내리지 않습니다. ^는 둘 다 동일하고 거짓임을 의미합니다. &&||三种,且意义相同,区别在于C中运算结果为0和非0,Java中只能是ture或false。Java中还存在&、|、^(异或),&和&&、|和||的区别在于前者是非捷径运算符而后者是捷径运算符,即&前后都做判断,&&前为假不做后面的判断,|前后都做判断,||前为真不做后面的判断。^表示两者相同为假。

C和Java中都有的位运算符是:&|^~(取反)8dde7a6e0f991956e2f0d9549bf3c03e>(右移),意义基本相同。负数的右移运算在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都不支持变长数组,引用的时候都是 数组名[下标]

C와 Java에서 사용할 수 있는 비트 연산자는 다음과 같습니다: &, |, ^, ~ (reverse) , 384add72806f6c2fd4558708f7027556>(오른쪽 시프트)는 기본적으로 동일한 의미를 갖습니다. C에서 음수의 오른쪽 시프트 연산은 시스템에 따라 다르지만(산술적 오른쪽 시프트일 수도 있고 논리적 오른쪽 시프트일 수도 있음), Java에서는 >>가 산술적 오른쪽 시프트, 즉 최상위 비트가 부호 비트로 채워집니다. Java의 논리적 오른쪽 시프트(부호 없는 오른쪽 시프트) 연산자는 >>>이며, 이는 보수 오른쪽 시프트를 사용하고 상위 비트에 0을 추가합니다.

PS: 주의깊은 독자라면 음수 바이트 또는 -10과 같은 짧은 유형을 정의하고 >>> 메소드를 사용하여 부호 없는 오른쪽 시프트를 수행하면 출력 결과가 -5라는 것을 알 수 있습니다. 위의 내용을 따르십시오. 0이 추가된 상위 비트는 양수여야 합니다. int 또는 long 유형은 음수가 아닙니다. 이유는 무엇입니까? >>> 연산을 수행할 때 Java에서 사용하는 가장 낮은 데이터 유형이 int 유형이기 때문에 상위 데이터가 모두 1이 되기 때문이라고 생각합니다(컴퓨터에 저장된 데이터는 2의 보수로 저장되므로). 음수 바이트 또는 short 유형은 int 유형으로 변환되고 상위 비트는 1)로 완전히 채워집니다. Shift 시 상위 비트의 마지막 1이 하위 비트의 첫 번째 비트로 이동된 후 데이터 유형으로 차단됩니다. 우리는 (바이트 또는 짧은) 정의했으므로 우리가 보는 숫자는 여전히 음수입니다. 여기서 byte, short 타입의 데이터에 대해 > 연산을 수행할 경우 원하는 값을 얻지 못할 수도 있으니 주의해야 함을 알 수 있다.

6. 배열

C에서 배열의 정의는 다음과 같습니다.

rrreee
정의는 초기화와 동시에 수행될 수 있습니다. 예: int a[10] = {0 ,1,2,3,4,5, 6,7,8,9};괄호 안의 상수는 생략 가능합니다.

Java에서 배열을 정의하는 방법에는 두 가지가 있습니다. rrreee

정의와 초기화를 동시에 수행할 수 있습니다. 예: int []a = {0,1,2,3,4,5, 6,7,8, 9};

참고: Java의 배열이 정의될 때 초기화되지 않은 경우 초기화 시 먼저 메모리를 할당해야 합니다. 즉:

rrreee

메모리를 할당할 수도 있습니다.

rrreee

C Java와 Java 모두 가변 길이 배열을 지원하지 않으며 항상 배열 이름 [하위 첨자]로 참조됩니다. 차이점은 다음과 같습니다. 🎜🎜🎜Java의 첨자 범위는 0~배열 길이-1입니다. 이 범위에 없으면 배열 첨자 범위를 벗어난 예외가 발생하지만 C의 유효한 범위도 0~배열입니다. 길이는 1이지만 아래 첨자는 이 제한을 초과하지 않습니다. 오류가 보고됩니다. 🎜🎜🎜다차원 배열에서는 배열 요소가 행으로 배열됩니다. 🎜🎜🎜또 한 가지 주의할 점: C에서 초기화 없이 배열을 정의하면 배열 요소 값을 예측할 수 없는 반면, Java에서는 초기화 없이 메모리를 할당하면 배열에 기본값이 있습니다. 🎜🎜🎜🎜7. 명령문 🎜🎜🎜 C와 Java 명령문 사이에는 큰 차이가 없습니다. 🎜🎜1) 메소드/함수를 호출할 때 C는 Java에서 메소드를 직접 호출합니다. 메소드 이름 앞에는 객체 이름이 와야 합니다. 🎜🎜2) 두 개의 중첩된 복합문이 C에서는 동시에 같은 이름의 변수를 정의하는 것이 가능하지만 Java에서는 불가능합니다. 🎜

위 내용은 java와 c의 구문 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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