기타
# 실수형 선택기준
## 실수형의 종류
- 실수형 : float, double
- float 의 정밀도 : 7자리
- double의 정밀도 : 15자리
- 실수형은 소수점도 표현해야 하므로 얼마나 큰 값을 표현할 수 있는지, 얼마나 0에 가깝게 표현할 수 있는지가 중요하다.
## 정밀도 (precision)
- 정수형과 달리 실수형은 오차가 발생할 수 있다는 단점이 존재한다. 그래서 표현할 수 있는 값의 범위 뿐만 아니라, 정밀도(precision)도 중요하다.
- float의 경우 정밀도가 7자리로 'a × 10의 n승' 의 형태로 표현된 7자리의 10진수를 오차없이 저장할 수 있다는 의미이다.
- 만약 7자리 이상의 정밀도가 필요한 경우 double을 사용. (float 정밀도의 2배)
## 정리
- float : 연산 속도의 향상, 메모리 절약 시 사용.
- double : 더 큰 값의 범위, 보다 높은 정밀도를 필요로 할때 사용.
# 오버플로우
## 정수형의 오버플로우
- 오버플로우 (overflow) : 해당 타입이 표현할 수 있는 값의 범위를 넘어서는 것.
- 정수형 타입이 표현할 수 있는 최대값에 +1 할 경우 최소값, 최소값에서 -1 할 경우 최대값이 된다.
## 실수형의 오버플로우
- 정수형과 달리 실수형에서 오버플로우 발생 시 변수의 값은 무한대가 된다.
- 실수형에는 정수형에는 없는 언더플로우 존재.
- 언더플로우 (underflow) : 실수형으로 표현할 수 없는 아주 작은 값(양의 최소 값 보다 작은 값)이 되는 경우로, 이때 변수의 값은 0이 된다.
# 정수형 선택기준
## 정수형의 종류와 크기
- 정수형 : byte, short, int, long
- byte부터 long까지 크기가 1byte 부터 시작해서 2배씩 증가한다.
## int 사용 권장
- byte와 short가 int형에 비해 크기가 작아 메모리를 절약할 수 있지만, 저장할 수 있는 값의 범위가 작아 연산 시 값의 범위를 넘어서 잘못된 결과를 얻을수 있다.
- JVM의 피연산자 스택(operand stack)이 피연산자를 4byte 단위로 저장하여 크기가 4byte 보다 작은 자료형의 경우 4byte로 변환 후 연산이 수행되기 때문에 int 사용이 권장된다.
## 정리
- 정수형 변수를 선언 시 int 타입으로 진행.
- int의 범위(약 +-20억)를 넘어서는 수를 다뤄야 할 경우 long 사용.