지난 포스트에서 변수의 개념, 변수 선언법, 변수 타입을 알아보았습니다. 이번 포스트에서는 변수 타입 중 기본형 8가지 boolean, byte, char, short, int, float, long, double
에 대해서 알아보도록 하겠습니다.
기본형 변수 타입에는 boolean, byte, char, short, int, float, long, double
8가지 변수 타입이 있습니다. 이들은 또다시 논리형, 문자형, 정수형, 실수형
4가지 세부 항목으로 구분이 됩니다.
boolean
. 논리 값인 true
, false
중 하나의 값을 저장. 조건식이나 논리식 계산에 사용. char
. 문자를 저장. 변수 하나당 하나의 문자만을 저장.byte, short, int, long
. 정수 값을 저장.float, double
. 실수 값을 저장.정수형
은 주로 int, long
두 가지가 주로 사용됩니다. byte
는 이진 데이터를 short
는 C 언어 호환을 위해 사용하는 타입입니다.
정수형의 default는
int
, 실수형의 default는double
을 사용합니다.
다음 표는 8가지 기본형과 기본형에 할당되는 메모리의 크기를 나타낸 표입니다.
종류 / 크기 | 1byte | 2byte | 4byte | 8byte |
---|---|---|---|---|
논리형 | boolean | |||
문자형 | char | |||
정수형 | byte | short | int | long |
실수형 | float | double |
boolean
을 제외한 나머지 7개의 기본형은 캐스팅(형변환, casting)
이라는 개념을 통해서 서로간에 변환할 수 있습니다. 특히 문자형인 char
는 내부적으로 정수값 코드(유니코드)로 변환되어 저장되기 때문에 사실상 7개의 기본형은 숫자값으로 긴밀하게 연결되어 있다고 생각하시면 됩니다.
다음 표는 8가지 기본형과 기본형에 저장 가능한 값의 범위를 나타낸 표입니다.
범위를 열심히 외울 필요는 없고 정수형에서 숫자가 9자리를 초과하는 경우 long을 사용한다 정도만 인지하시면 됩니다.
그러면 이제는 각 기본형에 대해서 조금 더 자세히 알아보도록 하겠습니다.
boolean
은 유일한 논리형 타입으로 true, false
둘 중 하나만을 갖습니다. boolean
의 default값은 false
입니다.
boolean power = true;
char
도 역시 유일한 문자형 타입입니다. 값으로는 문자 하나를 갖습니다.
내부적으로 유니코드의 정숫값을 취하는데 범위가 \u
+ 0000~ffff
사이 즉, 65536(2^16)개의 코드를 사용할 수 있습니다.
char
를 선언하고 값을 초기화 할 때는 문자를 작은 따옴표''
로 감싸줍니다.
char word = 'a';
//또는 소문자 a가 유니코드 \u0061이므로 다음과 같은 선언도 가능합니다.
char word = '\u0061';
특수문자는 일반적인 문자와 다르게 적습니다. 대표적인 특수문자의 예 입니다.
char tab = '\t';
char newLine = '\n';
char singleQuote = '\'';
char doubleQuote = '\"';
char backslash = '\\';
정수형은 정수를 저장할 수 있는 변수 타입입니다. 가장 기본이 되는 default 타입은 int
입니다.
byte
는 1바이트, short
는 2바이트, int
는 4바이트, long
은 8바이트를 저장할 수 있습니다. 기본적으로 int
를 사용하되 연산이나 데이터가 9자리를 넘어갈 것으로 예상되는 경우엔 long
을 사용합니다.
byte bNumber = 1;
short sNumber = 1;
int iNumber = 1;
long lNum = 1L; //반드시 접미사로 L을 붙입니다.
여기서 주목해야할 것은
long
타입인데,long
타입을 선언하고 사용하는 경우에는 반드시 숫자 뒤에 접미사L
을 붙여야합니다. 왜냐하면 기본 정수형이int
이기 때문에 접미사를 붙이지 않는 경우int
로 취급되어서 연산 과정에서 오류가 발생할 수 있기 때문입니다.소문자도 가능하지만, 소문자
l
은 숫자1
과 혼동할 여지가 있기에 대문자로 붙이는 것을 추천드립니다.
단순히 10진수 정수 외에도 2진수, 8진수, 16진수의 데이터 저장도 가능합니다. 2진수는 수 앞에 0b
, 8진수는 정수 맨 앞에 0
을 붙이고 16진수는 0x
를 붙여서 나타냅니다. (알파벳 o
아니고 숫자 0
입니다!!!)
int bin = 0b1010; //2진수 1010, 10진수 10
int oct = 011; //8진수 11, 10진수 9
int hex = 0x11; //16진수 11, 10진수 17
실수형은 실수를 저장할 수 있는 타입으로 float, double
두 가지가 있습니다. 실수형의 default는 double
입니다.
float
는 4바이트, double
은 8바이트 크기를 사용하는데 이는 실수의 저장방식 때문입니다.
자바에서 실수는 부동소수점 방식으로 저장되는데, 부동소수점에 대한 설명은 해당 포스트를 참조해주세요.
float fNum = 3.14f;
double dNum = 3.1415926;
마찬가지로 실수의 기본형이
double
이기 때문에float
를 사용하는 경우에 접미사로F 또는 f
를 붙여줍니다. 앞선 L과 다르게 혼동할 여지가 없기에 소문자를 사용해도 괜찮습니다.
추가적으로 10의 제곱을 나타내는 e가 포함되어 있으면 자동으로 실수형으로 간주됩니다.
public static void main(String[] args) {
double num = 1.e-1;
System.out.println(num);
}