Programer/Android (Java)

JAVA 데이터 타입

아즈샤 2013. 6. 13. 17:56
반응형

JAVA는 대학교 3학년 때 전공 서적(제목이 기억 안 남;)으로 한 번 보았고, 'Head First JAVA 영문판' 1회 정독, 'JAVA의 정석' 발췌독 이렇게 공부했는데,

뭔가 정리되었다는 생각이 들지 않아 자북 사이트에 있는 '소설같은 JAVA'를 보면서 블로그에 정리하기로 보기로 했습니다. (최대한 필요한 부분만 기록)

 

1. 데이터 타입

 

- 데이타 타입은 메모리를 생성하기 위한 도구이다.

- JAVA에서 메모리를 생성하는 유일한 방법은 데이터 타입을 이용하는 것이다.

- 데이터 타입은 크기가 있다.

 

흠.. 메모리는 그럼 무엇일까요?

간단하게 생각해서 문제를 풀기 위한 연습장이라고 생각하면 쉬울 것 같군요. (음!? 더 헷갈리게 되나?)

일단, 여기서는 데이터를 담을 수 있는 '공간'이라고 생각하면 될 것 같습니다.

 

예를 들어 봅시다.

 

  1. int i = 1;  

 

a. int는 정수형 데이터를 저장할 수 있는 데이터 타입입니다. 크기는 4byte, 즉 32bit 입니다.

b. int가 나오면 일단 메모리에서 4byte의 공간을 제공해 줍니다. 그리고 그 공간에 1를 담아줍니다.

 

근데 광활한 메모리 공간에서 1을 담아 논 곳을 어떻게 찾을 수 있을까요?

저장한 1를 찾기 위해 'i'라는 메모리 주소(정확하게 말하면 메모리 주소 심볼)을 선언하는 것입니다.

 

c. i를 사용하면 메모리에서 i에 연결된 1를 찾을 수 있습니다.

 

결론은

 

데이터 타입은 단순히 '변수를 선언하는 도구'일 뿐만 아니라 '메모리를 생성하기 위한 도구' 라는 점입니다.

 

 

2. 기본 데이터 타입

 

 

1byte

2byte

4byte

8byte

정수형(문자형)

 

char 

 

 

정수형

 byte

short

int

long 

실수형

 

 

float

double 

논리형

 boolean

 

 

 

앞에 예시를 든 int 외에 위와 같은 데이터 타입의 종류가 있습니다. JAVA의 기본 데이터 타입이라고 하는데요.

이러한 데이터 타입은 메모리의 형태(비트의 조합)를 지정해 줍니다. (예를 들어 실수형인 float 은 지수부, 가수부로 나누어 저장하게 됩니다.)

(지수부, 가수부에 대한 내용을 깊이 들어가면 '컴퓨터 구조론'과 연결이 됩니다. 하지만 이곳에서는  더 이상 자세한 설명은 생략합니다.)

 

데이터 타입은 '메모리의 크기와 메모리의 형태를 지정하는 도구이다' 라고 설명할 수 있겠군요.

 

참고로 JAVA에서는 모든 데이터 타입이 singed 입니다. 양수만 제공하는 unsigned는 지원하지 않다고 합니다.

 

 

3. 변수와 상수

 

변수란 데이터 타입에 명시된 형태의 데이터를 담을 수 있는 메모리이다.

 

데이터 타입이 '설계도'라고 생각하면 변수는 실질적인 '건물'이라고 볼 수 있겠군요.. 

왠지 클래스와 객체의 관계 같지 않습니까? (나중에 배우겠지만 실제로 동일한 관계 입니다.)

  1. int i = 1;

자 아까 예제가 또 나왔습니다. 여기에서 우리는 자연스럽게 i는 '변수' 라고 합니다. i라는 변수에 정수형 타입인 1을 담아냈으니까요.

음?! 근데 아까는 '메모리 주소(정확하게 말하면 메모리 주소 심볼)' 라고 말하지 않았냐구요?

이렇게 하면 이해가 쉽습니다.

 

i -> 메모리 주소 심볼 -> 변수(메모리)

 

즉, i 는 메모리 주소 심볼이고 메모리 주소 심볼은 변수를 가리키게 됩니다. 즉 i는 변수라고 이야기 할 수 있습니다.

 

상수로 넘어가 봅시다.


상수란 데이터 그 자체를 말하며 바꿀 수 없는 데이터를 말한다. 


상수는 데이터 타입과 연결된 형태를 가지고 있습니다. (int형 상수, long형 상수, double형 상수...등등)

이외에 문자열 상수가 있습니다. 문자열 상수는 마지막에 '\0' 가 자동적으로 추가 됩니다. 


반응형

'Programer > Android (Java)' 카테고리의 다른 글

JAVA 클래스 - Part 3  (0) 2013.06.25
JAVA 클래스 - Part 2  (0) 2013.06.24
JAVA 클래스 - Part 1  (0) 2013.06.18
[JSP] SQL 연동 기본 개념  (0) 2012.11.12
[JSP] 개발 환경 설정 (PC 교체시)  (0) 2012.11.12