메모리는 여러 프로그램이 공유하는 자원이므로 전에 다른 프로그램에 의해 저장된 알 수 없는 값(쓰레기 값)
이 남아 있을 수 있기 때문이다.
기본형 (8개)
- 논리형(boolean), 문자형(char), 정수형(short, int, long), 실수형(float, double)
- 실제 값을 저장한다.
참조형 (기본형 8개를 제외한 나머지 타입)
- 객체의 주소를 저장한다.
int
를 사용하자각 타입마다 저장할 수 있는 값의 범위가 다르므로 저장할 값의 범위에 맞는 타입을 선택하면 된다.
정수는 일반적으로 int
를 사용하는데, CPU가 가장 효율적으로 처리할 수 있는 타입이기 때문이다. 효율적인 실행보다 메모리 절약이 우선이라면 byte(1byte)
,short(2byte)
를 사용하면 된다.
실수형은 오차가 발생할 수 있다는 단점이 있다. 그래서 정밀도
가 중요한데, 정밀도가 높을 수록 오차의 범위가 줄어든다. float
는 7자리
의 정밀도를 가지고, double
은 15자리
의 정밀도를 가진다.
💡 실수형 변수를 선택할 때는 저장 가능한 값의 범위 뿐만 아니라 정밀도도 타입 선택의 기준이 된다.
+) 실수형 타입의 기본형은double
이다.
// 리터럴
int triangleArea = (20 * 10) / 2; // 삼각형의 넓이 공식
// 상수 사용
final int WIDTH = 20; // 폭
final int HEIGHT = 10; // 넓이
int triangleArea = (WIDTH * HEIGHT) / 2;
위 코드를 보면 상수는 리터널에 의미있는 이름
을 붙일 수 있기때문에 코드의 이해와 수정을 쉽게 만든다.
println()
은 변수의 값을 그대로 출력하므로, 값을 변환하지 않고는 다른 형식으로 출력할 수 없다.
그래서 변수의 값을 여러 형식으로 변환하여 출력하고 싶다면 printf()
를 사용한다.
printf()
에는 지시자(ex. %d
, \n
등)를 사용할 수 있기 때문이다.
💡 OS마다 줄바꿈 문자가 다를 수 있기 때문에
\n
보다%n
을 사용하는 것이 더 안전하다.
💡 지시자의 전체 목록을 보려면, java.util.Formatter 클래스를 보면 된다.