티스토리 뷰
■ 1. 메모리를 접근하는 방식에 차이가 있습니다.
C 언어 : pointer를 이용해서 메모리에 접근합니다. 하지만 이 pointer를 사용해서 부트영역을 건드린다면 치명적인 오류가 발생합니다.
자바 : reference를 사용합니다.
C언어는 100번지에 직접 물건을 전달하려 하는데 실수로 101번지에 배달하면 오류가 발생하지만 Java는 우체국을 통해 보내서 주소가 다를 경우 수취인 불명으로 반송되는 정도로 생각하면 좋을 것 같습니다.
■ 2.
C 언어 : 관련된 데이터를 하나로 모으기 위해 구조체(Structure)나 공용체(Union)를 사용합니다.
자바 : 클래스(Class) 개념을 사용합니다.
■ 3. 구성 단위
C언어 : acb.c 형태의 소스파일, abc.h 형태의 헤더파일 등 파일 단위로 되어 있어 #include를 사용해 문서에 포함합니다.
자바 : 클래스(Class) 단위로 되어 있어 import를 사용해 포함 시킵니다.
■ 4. 타입(type) 정의
C언어 : 구조체 등을 사용해 새로운 타입의 정의가 가능합니다.
자바 : 타입을 정의할 수 없습니다.
■ 5. goto
C언어 : goto 를 사용합니다.
자바 : goto라는 예약어는 있지만 사용하지 않습니다.
goto를 사용하면 로직이 복잡해진다고 하네요.
■ 6. 형변환 (casting 캐스팅)
C언어 : 자동 형변환을 합니다.
자바 : 자동으로 형변환을 하지 않고 오류를 발생시킵니다.
C언어의 경우 int a = 3.14 라고 정의할 경우 a를 자동으로 3으로 캐스팅합니다. 만약에 이것이 314를 3.14로 잘 못 쓴 것이라면 오류를 찾아내기가 어렵습니다. 자바에서는 이런 사용자의 실수를 방지하기위해 형검사를 엄격하게 한다고 합니다.
■ 7. 상속 (Inheritance)
C++ : 다중 상속이 가능합니다.
자바 : 단일 상속만 가능합니다.
다중 상속이 가능할 경우 상속한 각각의 부모에 같은 변수 명이 있는 경우 그 변수가 어디서 온 것 인지 알기 어렵다고 합니다.
■ 8.
C언어 : 파일 단위 이기 때문에 마음에 드는 부분을 가져다 쓸 수 없고 배껴야합니다.
abc.c → 컴파일(Compile) → abc.obj → 빌드(Build) → abc.exe 과정을 거쳐 최종적으로 바이너리 파일이 됩니다.
그래서 플랫폼에 종속적입니다. 예를 들면 UNIX에서 만든 abc.exe 는 WINDOWS에서는 실행이 안 됩니다. 라이브러리가 다를 수 있기 때문입니다.
그래서 플랫폼에 종속적입니다. 예를 들면 UNIX에서 만든 abc.exe 는 WINDOWS에서는 실행이 안 됩니다. 라이브러리가 다를 수 있기 때문입니다.
자바 : 클래스(Class) 단위의 객체 지향언어이고, interpreter방식 입니다.
abc.java → 컴파일 → abc.class → interpreter(자바가상머신) → 각 플랫 폼에 맛게 실행 하는 방식으로
바이너리가 아닌 바이트 코드의 클래스 파일을 읽으면서 자기 플랫폼에 맞게 실행됩니다. 즉 플랫폼에 독립적입니다.
바이너리가 아닌 바이트 코드의 클래스 파일을 읽으면서 자기 플랫폼에 맞게 실행됩니다. 즉 플랫폼에 독립적입니다.
[출처] : 꼬슬꼬슬의 Convergence (http://kkoseul.tistory.com/)
'java/javascript' 카테고리의 다른 글
class 파일 컴파일 버전 확인 (0) | 2014.08.26 |
---|---|
객체지향 언어의 특징 (0) | 2014.08.05 |
박싱(Boxing)과 언방식(Unboxing) (0) | 2014.04.02 |
int 와 Integer 차이 (0) | 2014.04.02 |
double 연산에서 NaN 처리 (0) | 2014.02.28 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- uriencode %20
- 리눅스 용량
- 쿼리
- centos port open
- linux port
- %29
- couchbase index
- centos7 port open
- 리눅스 port 열기
- uriencode %28
- linux port open
- 카우치베이스 인덱스
- crontab
- 리눅스 port
- linux du -h
- log
- uriencode 더하기
- %28
- firewalld
- uriencode %29
- encode 더하기
- du -h
- pig tool
- linux du
- du depth
- encode 공백
- 카우치베이스 INDEX
- couchbase 인덱스
- uriencode 괄호
- uriencode 공백
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함