
package variable;
public class Var8 {
public static void main(String[] args) {
// 정수
byte b = 127; // -128 ~ 127
short s = 32767; // -32768 ~ 32767
int i = 2147483647; // -2,147,483,648 ~ 2,147,483,647 (약 20억)
// -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
long l = 9223372036854775807L;
// 실수
float f = 10.0f;
double d = 10.0;
}
}
메모리를 적게 사용하면 작은 숫자를 표현할 수 있고, 메모리를 많이 사용하면 큰 숫자를 표현할 수 있다.
변수를 선언하면 표현 범위에 따라 메모리 공간을 차지한다. 그래서 필요에 맞도록 다양한 타입을 제공한다.

표현할 수 있는 숫자의 범위와 차지하는 메모리 공간은 다음과 같다.
byte : -128 ~ 127 (1byte, 2⁸)short : -32,768 ~ 32,767 (2byte, 2¹⁶)int : -2,147,483,648 ~ 2,147,483,647 (약 20억) (4byte, 2³²)long : -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 (8byte, 2⁶⁴)float : 대략 -3.4E38 ~ 3.4E38, 7자리 정밀도 (4byte, 2³²)double : 대략 -1.7E308 ~ 1.7E308, 15자리 정밀도 (8byte, 2⁶⁴)boolean : true, false (1byte)char : 문자 하나 (2byte)String : 문자열을 표현한다. 메모리 사용량은 문자 길이에 따라 동적으로 달라진다.int를 기본으로 사용한다. 따라서 int 범위까지 표현할 수 있다. 숫자가 int 범위인 약 20억을 넘어가면 L을 붙여서 정수 리터럴을 long으로 변경해야 한다. (대문자 L, 소문자 l 모두 가능하다. 그런데 소문자 l은 숫자 1과 착각할 수 있어서 권장하지 않는다.)double형을 사용한다. float형을 사용하려면 f를 붙여서 float형으로 지정해야 한다.이렇게 많은 변수들을 실제로 다 외우고 사용해야 할까?
byte : 표현 길이가 너무 작다. 또 자바는 기본으로 4byte(int)를 효율적으로 계산하도록 설계되어 있다. int를 사용하자.byte 타입을 직접 선언하고 여기에 숫자 값을 대입해서 계산하는 일은 거의 없다.short : 표현 길이가 너무 작다. 또 자바는 기본으로 4byte(int)를 효율적으로 계산하도록 설계되어 있다. int를 사용하자float : 표현 길이와 정밀도가 낮다. 실수형은 double을 사용하자.char : 문자 하나를 표현하는 일은 거의 없다. 문자 하나를 표현할 때도 문자열을 사용할 수 있다.String a = “b”와 같이 사용하면 된다.참고 : 메모리 용량은 매우 저렴하다. 따라서 메모리 용량을 약간 절약하기 보다는 개발 속도나 효율에 초점을 맞추는 것이 더 효과적이다.
int, long : 자바는 정수에 기본으로 int를 사용한다. 만약 20억을 넘을 것 같으면 long을 쓰면 된다.byte를 사용한다.double : 실수는 고민하지 말고 double을 쓰면 된다.boolean : true, false 참 거짓을 표현한다. 조건문에서 자주 사용된다.String : 문자를 다룰 때는 문자 하나든 문자열이든 모두 String을 사용하는 것이 편리하다.자주 사용하는 타입을 제외하고 실무에서 나머지를 사용하는 경우는 거의 없다. 그나마 파일 전송시에 byte를 사용하는 것 정도이다.