. Java의 기본 데이터 형식
본문 바로가기
프로그래밍 공부/Java

Java의 기본 데이터 형식

by 불냥이_ 2021. 5. 15.
데이터 타입 메모리의 크기 특징
byte 1byte -2^7 ~ (2^7-1)
(※ 2^7 = 128)
boolean 1byte true, false
char 2byte 문자
short 2byte -2^15 ~ (2^15-1)
(※ 2^15 = 32,768)
int 4byte -2^31 ~ (2^31-1)
(※ 2^31 = 2,147,438,643)
float 4byte ±1.40239846E-45 ~ ±3.40282347E+38, 
long 8byte -2^63 ~ (2^63-1)
(※ 2^63 = 9,223,372,036,854,775,808)
double 8byte ±4.9E-324 ~ ±1.79769313486231570E308

 Java의 기본 데이터 표시 방식이다.

 boolean이 1byte인 것은 오타가 아니다. boolean자체는 0과 1을 표현할 수 있는 1비트의 크기이지만, byte가 무엇인가. 컴퓨터가 다룰 수 있는 정보의 최소 단위아닌가. 그래서 1byte의 크기를 가진다. 이는 파이썬도 마찬가지.

 

 그리고 정수형인 int, short, long은 1, 2, 4byte인데 이들은 ± 2^(n*8 -1) 까지 표현할 수 있다. (양수는 0도 들어가니깐 -1)

 

 float랑 double은 실수형이다. 

 

  최적화된 메모리 사용을 위해 익혀두자. 100정도만이라면 byte로도 가능. 3만까지는 short를 사용해도 충분하고, 왠만한 숫자라면 int로 다 커버가 될 것 같다. long은 쓸 일이 있을까 할 정도로 큰 숫자가 되버린다. 

 

 속도 차원에서 접근한다면 32bit에선 int, 64bit에선 long이 짱짱일 것이다.

64bit에서 CPU의 레지스터 크기는 64bit (8byte) 이고, 이는 CPU가 한번에 처리할 수 있는 크기를 의미한다 (이를 다시 정의하면 word라고한다. 64bit에서는 64bit가 1word가 된다.). 그래서 이 크기의 데이터형을 읽을 때 가장 빠르다.

 

 나머지 타입형들에 대해서는 시간이 날 때 실험해보겠다....

 

 

 문자열은 말 그대로 문자들의 배열이다. 문자열은 String이라는 변수로 보관되며, 이는 객체이다. Java에서 모든 객체들은 heap 영역에 보관되고, 따라서 heap 영역의 크기 이상의 문자열을 가질 수 없다 (만약 넘칠 때 어떻게 되는지 실험해보고싶다.). 문자열로 몇 Gb를 다 쓰는 것은 매우매우 어렵겠지만 말이다. 

 

 

 

 

 

참고)

Thinking Different :: 32비트에서는 char, short 대신 int 형을 써야 연산속도가 줄어든다 (tistory.com)

Program - 32비트에서는 char, short 대신 int 형을 써야 연산속도가 줄어든다 (webs.co.kr)

String 클래스의 문자열 길이의 한계 :: 자바캔(Java Can Do IT) (tistory.com)

 

 

 

 

'프로그래밍 공부 > Java' 카테고리의 다른 글

[Java.util]Optional  (0) 2021.05.26
@Transactional  (0) 2021.05.25
[Guice] @Assisted  (0) 2021.05.21
Jooq란?  (0) 2021.05.20
[Lombok] @NoArgsConstructor, @RequiredArgsConstructor, @AllArgsConstructor  (0) 2021.05.20

댓글