지원하는 기본 타입
이름 |
타입 |
최솟값 | 최댓값 |
boolean |
불리언 |
False | True |
char |
2바이트 문자 |
\u0000 | \uffff |
byte |
1바이트 정수 |
-128 | 127 |
short |
2바이트 정수 |
-32,768 | 32,767 |
int |
4바이트 정수 |
-2,147,483,648 | 2,147,483,647 |
long |
8바이트 정수 |
-9,223,372,036,854,775,808 | 9,223,372,036,854,775,807 |
float |
4바이트 단정도 부동 소수 |
| |
double |
8바이트 단정도 부동 소수 |
|
바이트 크기와 저장가능한 범위의 이해
컴퓨터는 0과 1로 된 2진수만 숫자로 인식할 수 있고, 1비트는 숫자를 인지할 수 있는 하나의 저장공간을 나타냅니다.
1바이트는 8비트 입니다.
즉 1바이트는 8개의 0 과 1로 표현이 가능한 수의 범위를 나타냅니다.
그리고 이 중 가장 앞 부분의 비트는 부호형 비트로 0인경우 양수, 1인경우 음수를 나타냅니다.
이를 정수로 빗대어 설명해 보겠습니다.
byte 타입의 예시
먼저 8바이트는 8개의 비트로 이루어져 있습니다.
그 중 가장 앞 부분은 '부호형 비트' 로 0인경우 양수, 1인경우 음수를 나타냅니다.
가장 우측부터 좌측으로 2의 0승, 2의 1승, 2의 2승 이런 방식으로 올라갑니다.
그리고 비트에 저장된 값들을 곱하여 더하는 방식으로 진행됩니다.
첫 번째
-27*0 + 26*0 + 25*0 + 24*0 + 23*0 + 22*0 + 21*0 + 20*0 = 0
두 번째
-27*1 + 26*1 + 25*1 + 24*1 + 23*1 + 22*1 + 21*1 + 20*1 = -1
세 번째
-27*1 + 26*0 + 25*0 + 24*0 + 23*0 + 22*0 + 21*0 + 20*0 = -127
이해가 되시나요?
가장 앞에는 부호형 비트로 1인경우 음수를, 0인경우 양수를 나타내고
그 외의 숫자는 비트에 저장된 값과 비트 자리수의 승을 곱합으로써 값을 계산하게 됩니다.
결론
그렇다면, 프로그램을 만들 때 값의 범위를 항상 크게 가져가는것이 도움이 될까?
그렇지 않습니다.
4바이트 정수는 메모리에 4byte 를 할당합니다.
2바이트 정수는 메모리에 2byte 를 할당합니다.
이게 무엇을 의미하는 걸까요?
2바이트 정수가 넘지 않는 숫자만 사용이 된다면,
굳이 4바이트 정수를 사용하여 메모리를 낭비할 필요가 없습니다.
'Computer Language > JAVA' 카테고리의 다른 글
[JAVA] 자바 증감연산자의 전위와 후위 계산법 (0) | 2020.10.26 |
---|---|
[JAVA] 자바 키보드로 문자열 입력받아 출력하는 Scanner 와 BufferedReader 방법 (1) | 2020.10.25 |
[JAVA] 자바 프로그램이 실행되는 원리, 자바 컴파일러와 클래스 파일 (0) | 2020.10.25 |
[JAVA] Eclipse 다운로드 및 설치하기, 자바 프로그램 테스트 하기 (0) | 2020.10.25 |
[JAVA] OpenJDK 다운로드 및 설치하기 (JDK 다운 및 설치하기, JDK 란, 환경변수 잡는법) (0) | 2020.10.25 |