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
를 사용하는 것 정도이다.