
정수 자료형은 숫자의 범위에 따라 4가지 타입으로 나뉜다.
byte : -128 ~ 127 : 1 byteshort : -32,768 ~ -32,767 : 2 byteint : -2,147,483,648 ~ 2,147,483,647 : 4 bytelong : -9,223,372,036,854,775,808 ~ 생략 : 8 bytebyte byteInteger = 10;
short shortInteger = 5080;
int intInteger = 1280000;
long longInteger = 9876513215;
예전에는 저장장치의 용량이 충분하지 않았기에 저장공간을 효율적으로 사용하기 위해 byte나 short도 자주 사용했었지만, 최근에는 기술의 발전 덕에 저장장치의 용량을 딱히 신경쓰지 않아도 되는 시대가 열려, 사실상 int나 long만 쓰이게 되었다.
// 다른 타입 끼리 합치면 어떻게 되나?
byte byteInteger = 10;
short shortInteger = 20;
int intInteger = 30;
long longInteger = 40;
short sum1 = byteInteger + shortInteger; // 오류 short => int로 바꿔야 한다.
java: incompatible types: possible lossy conversion from int to short
int sum2 = shortInteger + intInteger; // 50
int sum3 = intInteger + longInteger; // 오류 int => long으로 바꿔야 한다.
java: incompatible types: possible lossy conversion from long to int
long sum4 = intInteger + longInteger; // 70
연산에 long이 포함이면 long으로 선언하고, 그 외 나머지 대부분의 경우는 int로 선언하면 된다.
float floatNumber = 1.2f; // 1.2
double doubleNumber = 4.3; // 4.3
float은 4바이트(32비트), double은 8바이트(64비트)를 사용한다.float은 약 6~7자리(단정밀도), double은 약 15~16자리(배정밀도)의 유효 숫자를 가진다.double이 float보다 훨씬 더 큰 실수 범위를 표현할 수 있다.double 타입으로 취급된다. float 사용 시 숫자 뒤에 f나 F를 붙여야 한다. (예: 3.14f).float을, 일반적인 계산에서는 높은 정밀도를 위해 double을 사용한다. 
// Java에서 실수형으로 정밀계산은 힘들다.
float floatSum = 0.001f + 0.001f + 0.0001f;
System.out.println(floatSum); // 0.0021000002 이렇게 오차가 있음