목차
1. 자바와 C언어의 비교
2. C언어 변수와 자료형
(2.1)변수(variable)
(2.3)상수(constant)
(2.3)변수 선언 및 종류
(2.4)자료형(data type)
3. 자바 변수와 자료형
(3.1)
4. 두 언어의 최종 비교
2. C언어 변수와 자료형
(2.1)변수(variable)
(2.3)상수(constant)
(2.3)변수 선언 및 종류
(2.4)자료형(data type)
3. 자바 변수와 자료형
(3.1)
4. 두 언어의 최종 비교
본문내용
izeof(int));
이는 동적 메모리 할당이라 하여 크기가 100인 동적 배열 score를 생성하는 것을 예로 들어보았다.
예
sizeof(x) // 변수
sizeof(10) // 값
sizeof(int) // 자료형
sizeof(double) // 자료형
3. 자바 변수와 자료형
자바의 변수도 C언어와 크게 다른 것은 없다. 하지만 위에서 도표를 이용한 비교를 해보면서 자바의 특징으론 객체 지향언어로 개발하였기 때문에 객체 지향 개념을 가장 정확하게 적용하고 있는 언어라고 할 수 있다. 그리고 플랫폼에 상관없이 한번 작성되어 컴파일 된 class 파일은 어떤 플랫폼에서도 동일하게 실행이 된다. 이처럼 위에서 두 언어의 비교를 해 보았을 때, 자바는 포인터, 다중상속, 연산자 오버 로딩, 매크로 전 처리기를 지원하지 않는걸 알아보았다. C언어에서는 포인터개념이 있지만 사실 자바에서 포인터 기능을 지원하지 않는다는 것뿐이지, 자바는 데이터를 접근할 때 거의 참조 자료형(reference type)이라 하여 포인터의 개념과 유사한 기법이 적용되어있다.
자바에서는 C언어의 목록에서 설명을 생략한 특징적인 부분을 강조하고 이 부분들에 대하여 알아 볼 것이다.
자바의 기본 자료형은 다음 표와 같다.
타입(자료형)
데이터
설명
키워드
메모리
character
문자
16비트 유니코드(Unicode) 문자 데이터
char
2 바이트
boolean
참과 거짓
참/거짓 값
boolean
1 바이트
byte
정수
부호를 가진 8비트 정수
byte
1 바이트
short
부호를 가진 16비트 정수
short
2 바이트
integer
부호를 가진 32비트 정수
int
4 바이트
long
부호를 가진 64비트 정수
long
8 바이트
float
실수
부호를 가진 32비트 부동소수점
float
4 바이트
double
부호를 가진 64비트 부동소수점
double
8 바이트
자바에서도 변수의 이름을 정하는 것, 선언하는 것에 대한 내용은 C언어와 유사하다. byte를 쓰면서 데이터 표현범위가 C보다 조금 더 확장되었다. 자바의 구조는 기본적으로 여러개의 ‘클래스(class)\' 로 합쳐져 하나의 프로그램이 되는데, 간략한 구조를 살펴보도록 한다.
public class Test{
public static void main(String[] args) {
int num = 0;
System.out.println(\"num 의 값은 : %d“, num);
}
}
위에는 Test라는 클래스가 있다. 기본적으로 자바는 인터페이스를 클래스화 시켜서 사용을 하는데 C++과는 문법적인 것은 객체지향적인 언어이기 때문에 다를 수 있지만, C++에서 영역에서 변수를 어떻게 선언하고 사용하는가의 개념은 크게 다르지 않다. 그리고 자바에서는 이 클래스를 인스턴스(instance)화 시켜 다른 클래스에서 참조하며, 해당 클래스에서 정의된 내용을 이용하여 쓸 수 있다. 이런 점이 객체지향적이며 포인터가 없다 할 뿐이지, 이 같은 기능으로 보다 효율적으로 쓸 수 있다는 특징이 있다.
자바에서는 이런 인스턴스에 접근하기 위해서 public, private, protected 기본적으로 접근 지정자가 있는데 보안성을 가지며, C언어에서 보다 가독성이나 문법적으로 보기 편리하다는 특징도 갖추고 있다.
public 은 모든 클래스가 접근이 가능하고 private는 같은 클래스 내에서만 접근이 가능 protected는 같은 패키지 내에 있는 클래스 접근이 가능 하다는 뜻을 지니고 있다.
4. 두 언어의 비교(최종)
자바와 C언어를 비교해서 자료형과 관련된 언어의 특징을 알아보자.
- 자바 문법은 간단한 LALR파서가 해석 할 수 있는 문맥자유 문법이다. C++ 해석은 약간 더 복잡하다. 예를 들면, Foo<1>(3);인 문장을
해석할 때 Foo가 변수라면 연속된 비교문이지만, Foo가 클래스 템플릿 이름이라면 객체를 생성하게 된다.
- C++은 이름 공간 레벨에 상수, 변수, 함수가 있을 수 있다. 자바에서는 모든 상수, 변수, 함수는 반드시 클래스나 인터페이스에 속해
있어야 한다.
- C++에 있는 const는 개념적으로 ‘읽기 전용’ 데이터임을 명시하며 자료형에 적용된다. 자바에 있는 final은 변수가 다시 할당될 수
없음을 나타낸다. 기본 자료형에 대해서는 const int와 final int처럼 동일하지만, 복잡한 클래스에서는 조금 다르다.
C++
Java
const Rectangle r;
final Rectangle r = new Rectangle();
r = anotherRectangle; // 잘못
r = anotherRectangle; // 잘못
r.x = 5; // 잘못, r은 상수 Rectangle
r.x = 5; // 올바름, r은 여전히 같은 Rectangle 객체를 참조하고 있다.
- C++은 goto문을 지원한다. 자바는 코드를 읽기 쉽도록 구조적 제어 흐름을 강요한다. goto문을 지원하지 않지만, goto와 비슷한 기능을
하는 레이블 break와 레이블 continue를 제공한다.
- C++은 자바에서 없는 저수준 기능을 제공한다. C++에서는, 포인터를 이용하면 저수준으로 운영 체제 컴포넌트에 쓰기 작업을 할
수밖에 없는 경우 특정한 메모리 위치에서 데이터를 조작하는 데 사용 될 수 있다. 또한, 많은 C++컴파일러는 어셈블리어를 지원한다.
자바에서는, 그런 코드는 모두 외부 라이브러리에 배치해야하며 상당한 오버헤드를 가지는 Java Native Interface를 통해서만 접근이
가능하다.
위 특징으로 참조자료형에 관련된 의미론(Semantics)을 알아 볼 수 있다.
- C++은 기본 자료형 사이에 암시적 형변환을 허용하며, 사용자 정의 자료형에 대한 암시적 형변환도 가능하다. 자바에서는 기본 자료형
사이에 오직 넓은 범위로의 암시적 형변환을 허용하며, 다른 경우는 모두 cast를 통한 명시적 형변환만 가능하다.
(이런 영향은 boolean 자료형이 필요한 조건문(if,while, for의 탈출조건)에도 나타난다. 자바는 int를 boolean으로 좁힐 수 있는 암시적
형변환이 안되기
이는 동적 메모리 할당이라 하여 크기가 100인 동적 배열 score를 생성하는 것을 예로 들어보았다.
예
sizeof(x) // 변수
sizeof(10) // 값
sizeof(int) // 자료형
sizeof(double) // 자료형
3. 자바 변수와 자료형
자바의 변수도 C언어와 크게 다른 것은 없다. 하지만 위에서 도표를 이용한 비교를 해보면서 자바의 특징으론 객체 지향언어로 개발하였기 때문에 객체 지향 개념을 가장 정확하게 적용하고 있는 언어라고 할 수 있다. 그리고 플랫폼에 상관없이 한번 작성되어 컴파일 된 class 파일은 어떤 플랫폼에서도 동일하게 실행이 된다. 이처럼 위에서 두 언어의 비교를 해 보았을 때, 자바는 포인터, 다중상속, 연산자 오버 로딩, 매크로 전 처리기를 지원하지 않는걸 알아보았다. C언어에서는 포인터개념이 있지만 사실 자바에서 포인터 기능을 지원하지 않는다는 것뿐이지, 자바는 데이터를 접근할 때 거의 참조 자료형(reference type)이라 하여 포인터의 개념과 유사한 기법이 적용되어있다.
자바에서는 C언어의 목록에서 설명을 생략한 특징적인 부분을 강조하고 이 부분들에 대하여 알아 볼 것이다.
자바의 기본 자료형은 다음 표와 같다.
타입(자료형)
데이터
설명
키워드
메모리
character
문자
16비트 유니코드(Unicode) 문자 데이터
char
2 바이트
boolean
참과 거짓
참/거짓 값
boolean
1 바이트
byte
정수
부호를 가진 8비트 정수
byte
1 바이트
short
부호를 가진 16비트 정수
short
2 바이트
integer
부호를 가진 32비트 정수
int
4 바이트
long
부호를 가진 64비트 정수
long
8 바이트
float
실수
부호를 가진 32비트 부동소수점
float
4 바이트
double
부호를 가진 64비트 부동소수점
double
8 바이트
자바에서도 변수의 이름을 정하는 것, 선언하는 것에 대한 내용은 C언어와 유사하다. byte를 쓰면서 데이터 표현범위가 C보다 조금 더 확장되었다. 자바의 구조는 기본적으로 여러개의 ‘클래스(class)\' 로 합쳐져 하나의 프로그램이 되는데, 간략한 구조를 살펴보도록 한다.
public class Test{
public static void main(String[] args) {
int num = 0;
System.out.println(\"num 의 값은 : %d“, num);
}
}
위에는 Test라는 클래스가 있다. 기본적으로 자바는 인터페이스를 클래스화 시켜서 사용을 하는데 C++과는 문법적인 것은 객체지향적인 언어이기 때문에 다를 수 있지만, C++에서 영역에서 변수를 어떻게 선언하고 사용하는가의 개념은 크게 다르지 않다. 그리고 자바에서는 이 클래스를 인스턴스(instance)화 시켜 다른 클래스에서 참조하며, 해당 클래스에서 정의된 내용을 이용하여 쓸 수 있다. 이런 점이 객체지향적이며 포인터가 없다 할 뿐이지, 이 같은 기능으로 보다 효율적으로 쓸 수 있다는 특징이 있다.
자바에서는 이런 인스턴스에 접근하기 위해서 public, private, protected 기본적으로 접근 지정자가 있는데 보안성을 가지며, C언어에서 보다 가독성이나 문법적으로 보기 편리하다는 특징도 갖추고 있다.
public 은 모든 클래스가 접근이 가능하고 private는 같은 클래스 내에서만 접근이 가능 protected는 같은 패키지 내에 있는 클래스 접근이 가능 하다는 뜻을 지니고 있다.
4. 두 언어의 비교(최종)
자바와 C언어를 비교해서 자료형과 관련된 언어의 특징을 알아보자.
- 자바 문법은 간단한 LALR파서가 해석 할 수 있는 문맥자유 문법이다. C++ 해석은 약간 더 복잡하다. 예를 들면, Foo<1>(3);인 문장을
해석할 때 Foo가 변수라면 연속된 비교문이지만, Foo가 클래스 템플릿 이름이라면 객체를 생성하게 된다.
- C++은 이름 공간 레벨에 상수, 변수, 함수가 있을 수 있다. 자바에서는 모든 상수, 변수, 함수는 반드시 클래스나 인터페이스에 속해
있어야 한다.
- C++에 있는 const는 개념적으로 ‘읽기 전용’ 데이터임을 명시하며 자료형에 적용된다. 자바에 있는 final은 변수가 다시 할당될 수
없음을 나타낸다. 기본 자료형에 대해서는 const int와 final int처럼 동일하지만, 복잡한 클래스에서는 조금 다르다.
C++
Java
const Rectangle r;
final Rectangle r = new Rectangle();
r = anotherRectangle; // 잘못
r = anotherRectangle; // 잘못
r.x = 5; // 잘못, r은 상수 Rectangle
r.x = 5; // 올바름, r은 여전히 같은 Rectangle 객체를 참조하고 있다.
- C++은 goto문을 지원한다. 자바는 코드를 읽기 쉽도록 구조적 제어 흐름을 강요한다. goto문을 지원하지 않지만, goto와 비슷한 기능을
하는 레이블 break와 레이블 continue를 제공한다.
- C++은 자바에서 없는 저수준 기능을 제공한다. C++에서는, 포인터를 이용하면 저수준으로 운영 체제 컴포넌트에 쓰기 작업을 할
수밖에 없는 경우 특정한 메모리 위치에서 데이터를 조작하는 데 사용 될 수 있다. 또한, 많은 C++컴파일러는 어셈블리어를 지원한다.
자바에서는, 그런 코드는 모두 외부 라이브러리에 배치해야하며 상당한 오버헤드를 가지는 Java Native Interface를 통해서만 접근이
가능하다.
위 특징으로 참조자료형에 관련된 의미론(Semantics)을 알아 볼 수 있다.
- C++은 기본 자료형 사이에 암시적 형변환을 허용하며, 사용자 정의 자료형에 대한 암시적 형변환도 가능하다. 자바에서는 기본 자료형
사이에 오직 넓은 범위로의 암시적 형변환을 허용하며, 다른 경우는 모두 cast를 통한 명시적 형변환만 가능하다.
(이런 영향은 boolean 자료형이 필요한 조건문(if,while, for의 탈출조건)에도 나타난다. 자바는 int를 boolean으로 좁힐 수 있는 암시적
형변환이 안되기
소개글