자바는 변수의 타입과 변수의 이름을 미리 지정하고 사용해야한다.
자바는 8개의 기본형(primitive) 타입이 있고 그 외에는 나머지는 reference 타입이다.
기본형 타입은 그 타입이 할당된 변수에 들어올 수 있는 값이 정해져 있다.
int a = 1; // 정수형만 들어올 수 있다.
char b = 'c'; // ''안에 하나의 문자만 들어올 수 있다.
boolean = true; //true나 false만 들어올 수 있다.
...
byte :
short :
int :
👉 32비트에서 메모리를 사용한다면 메모리 용량이 byte나 short보다 int를 사용하는 것이 연산속도가 높다. 대용량 배열에는 byte나 short를 사용해 메모리 용량을 줄일 수 있지만 연산속도가 줄어들 수 있다.
구분 | 부호 결정() | 값 | |||||||
---|---|---|---|---|---|---|---|---|---|
양수 최대값 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 127 |
음수 최소값 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -128 |
[그림1] 타입이 byte인 경우(8비트)
👉 밑이 2인 이유는 1 bit는 0과 1로 표현할 수 있기 때문이다(2가지).
👉 이진법은 2의 0승 부터 시작하기 때문에 그림 1과 같이 byte의 경우 최대 자리수는 2의 7승이다.
👉 맨 앞의 비트는 부호를 결정한다. 맨 앞의 비트가0
이면양수
,1
이면음수
이다.
👉 양수의 최대값에서 1을 빼는 이유
- 그림 1.을 보면 양수의 최대 값일 때는 맨 앞의 비트가 0이고 음수의 최소 값일 때는 1이다.
- byte의 양수의 최대값은 6개의 비트가 모두 1이고 이것을 10진수로 표현하면 127이 된다.
- byte의 음수의 최소값은 맨 앞의 비트가 1이고 나머지 비트가 모두 0일 때 이다. 이것을 10진수로 표현하면 -128이 된다.
float :
double:
👉 float과 double은 정확한 숫자를 표현하지 못 한다. 각각 보장된 비트 수를 넘어서면 값의 정확성을 보장할 수 없다.
👉 정확한 숫자를 표현하려면 BigDecimal을 사용해야 한다.
👉 부동 소숫점을 사용하는 이유 : 고정 소숫점을 사용하는 것 보다 더 적은 용량으로 숫자를 표현 가능하다. https://gigglehd.com/gg/hard/5427559
boolean :
char:
'\u0000'
(or 0) 에서 최대 '\uffff'
👉 “”안에 문자열을 사용하면 자동으로 String 클래스 객체가 생성된다. String 객체는 한번 만들어지면 변하지 않는다. 엄밀히 Primitive 타입은 아니다.
출처:https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html
구분 | 부호 결정() | 값 | |||||||
---|---|---|---|---|---|---|---|---|---|
양수 최대값 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 127 |
음수 최소값 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | -128 |
[그림1] 타입이 byte인 경우(8비트)
정수형 오버플로우 :
정수형 언더 플로우 :
실수형 오버 플로우 :
실수형 언더플로우 :
https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html
자바의 신, 이상민 저