본문 바로가기

서론

 

 

 

Java의 데이터타입은 크게 `기본형 자료`와 `참조형 자료`로 구분할 수 있다. 먼저 기본형 자료형을 알아보자. Java의 자료형을 정리하는 차원에서 책을 보다가 byte와 short 자료형이 있는데 대부분의 정수형을 표현할때 Intege를 사용하는지 궁금증이 생겼다.

 

기본형 자료

 

 

논리형(boolean)

Java 에서는 논리형 자료로 `boolean`을 제공한다. true와 false를 나타낸다. 다른 기본형과의 연산은 불가능한 특징이 있다. 크기는 1byte이다.

문자형(char)

컴퓨터는 0,1만 알고 있는 기계이다. 따라서 문자형도 결국에는 0,1로 저장이 된다. 내부적으로는 유니코드 / 아스키코드 로 맵핑시켜서 저장을 시킨다. 따라서 실수형이나 정수형과 연산이 가능한 특징이 있다. 크기는 2byte이다.

 

 

정수형 (int,byte,short,long)

- long : 8byte

- int : 4byte

- byte : 1byte

- short : 2byte

 

정수형 타입은 리터럴 접미사가 붙지않으면 int타입으로 간주한다. 이때, 왜 기본형 타입을 int로 가질까? 이것은 `JVM의 피연산자 스택(operand stack)`이 `피연산자를 4byte단위로 저장`하기 때문에 4byte보다 작은 자료형(byte,short)로 값을 계산하면 4byte로 변환하여 연산을 수행한다. 즉, int자료형을 사용하면 바로 연산을 하지만 4byte보다 작은 자료형을 사용하면 연산을 위해서 다시한번 int형으로 변환하는 연산이 생기게 된다. 따라서, 연산을 수행할때 int보다 작은 자료형을 사용하면 더 비효율적인것이다. 만약, CPU연산보다 메모리를 더 절약하는게 중요한 프로그램이라면 byte,short를 사용해도 된다.

 

 

실수형(float,double)

- float : 4byte

- double : 8byte

실수형을 저장하는 자료형에는 float,double이 있다. 일반적으로 float타입보다는 double타입을 더 많이 사용한다. 이는 높은 정밀도가 필요하기 때문이다. 실수는 오차가 발생하기 때문에 더 높은 정밀도를 가지기 위해서는 double타입을 사용해야 한다.

 

 

참조형 자료

 

- 참조형 변수의  크기가 32비트(몇몇 경우는 64비트)의 크기를 가진다.

- 저장 가능한 값은 객체가 존재하는 시작 주소(실제로는 참조 번호 입니다)이다. 조금 더 단순히 생각해보면 RAM의 한 공간의 위치를 가리키고 있고 이 위치는 32비트(또는 64비트)로 표현해 이 값을 가진다고 단순화 시켜 볼 수도 있습니다.

- 이 주소를 이용해서 그 곳에 있는 데이터나 함수를 참조해서 쓰기 때문에 참조형이라 불린다.

 

 

결론

 

 

`JVM의 피연산자 스택(operand stack)`이 `피연산자를 4byte단위로 저장`하기 때문에 4byte보다 작은 자료형(byte,short)로 값을 계산하면 4byte로 변환하여 연산을 수행한다. 

댓글