1. 메모리 접근 방식
c/c++ : pointer를 이용한 메모리 접근.
java : reference를 이용한 메모리 접근.
자바의 자료형은 크게 기본형과 레퍼런스 타입으로 분류할 수 있다.
레퍼런스 타입은 new 연산자를 통해서 heap 영역에 생성되는 자료형들을 의미한다.
레퍼런스 타입으로는 클래스, 배열, 인터페이스 가 있다.
프로그래밍 언어에서 포인터와 레퍼런스는 다른 메모리 공간에 대한 주소를 가지고 있다는 점에서 매우 유사하기 때문
에 혼동되는 개념이다.
포인터 혹은 레퍼런스 타입이 가리키고 있는 곳의 값에 접근하는 것을 dereference 라고 한다.
자바는 c++ 와 달리 포인터를 지원하지 않고, 레퍼런스 만을 지원한다.
포인터와 자바언어에서 사용되는 레퍼런스는 다음과 같은 차이가 있다.
2. 관련된 데이터를 하나로 모으기 위한 방법
c/c++ : 구조체, 공용체
java : 클래스
java는 거의 완전한 객체지향프로그래밍 언어로 기본 단위가 class이다.
하지만 c++ 는 c언어 스타일의 전역함수, 변수, non-class object들이 남발하는 프로그램이다.
3. 기본형의 차이
문자형
c++는 기본적으로 char 형이 1byte이며 부호 표시 변수 이기때문에 -129~127 까지 표현이 가능하고 ASCII 문자형을 표현한다.
그에 반해 java는 char형이 2byte 이고 unsigned 부호표시 불가이기 때문에 0~65535까지 표현이 가능하고 유니코드를사용한다.
java는 유니코드를 쓰기 때문에 세계의 어떤 언어든 소스 내에서 표현하기가 편리한 점이 있고c와는 달리 플랫폼에 상관없이 문자를 표현할 수 있는 장점이있다.
정수형
c++ 기본적으로 short, int, long, long long 형의 기본형과 signed, unsigned로 구분하여 총 8가지 정수형을 지원한다.
java도 short int long 세가지 정수형을 제공한다. java는 c언어와 다르게 기본형의 크기가 정해져있다.
이는 java가 jre 라는 가상머신을 사용하기때문에 가능한것이다.
실수형
c++ 는 float, double, long double을 지원하는데 이의 정밀도가 시스템마다 다르다.
java 는 float, double을 지원한다.
문자열
c++ 는 문자열을 위한 기본 자료형을 지원하지않는다. 대신 배열을 사용한다.
java는 문자열을 위한 기본형을 없지만 string이라는 클래스를 제공한다.
3. 성능 차이
'프로그래밍 > 기타정보' 카테고리의 다른 글
Windows 메모리/리소스 누수 디버깅 기법들 (0) | 2015.01.06 |
---|---|
데드락, Live락 대드락의 설명 (0) | 2014.08.08 |
내가 추구하는, 비효율적이고 불합리한 게임개발. (0) | 2014.07.10 |
2D 스프라이트 (0) | 2014.04.02 |
The element of programming style - 요약본 번역 (0) | 2014.04.02 |