[Java] 변수 타입 - 기본형

Bam·2024년 2월 20일
0

Java

목록 보기
5/98
post-thumbnail

지난 포스트에서 변수의 개념, 변수 선언법, 변수 타입을 알아보았습니다. 이번 포스트에서는 변수 타입 중 기본형 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가지 기본형과 기본형에 할당되는 메모리의 크기를 나타낸 표입니다.

종류 / 크기1byte2byte4byte8byte
논리형boolean
문자형char
정수형byteshortintlong
실수형floatdouble

boolean을 제외한 나머지 7개의 기본형은 캐스팅(형변환, casting)이라는 개념을 통해서 서로간에 변환할 수 있습니다. 특히 문자형인 char는 내부적으로 정수값 코드(유니코드)로 변환되어 저장되기 때문에 사실상 7개의 기본형은 숫자값으로 긴밀하게 연결되어 있다고 생각하시면 됩니다.

다음 표는 8가지 기본형과 기본형에 저장 가능한 값의 범위를 나타낸 표입니다.

범위를 열심히 외울 필요는 없고 정수형에서 숫자가 9자리를 초과하는 경우 long을 사용한다 정도만 인지하시면 됩니다.

그러면 이제는 각 기본형에 대해서 조금 더 자세히 알아보도록 하겠습니다.


논리형 - boolean

boolean은 유일한 논리형 타입으로 true, false 둘 중 하나만을 갖습니다. boolean의 default값은 false입니다.

boolean power = true;

문자형 - char

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 = '\\';

정수형 - byte, short, int, long

정수형은 정수를 저장할 수 있는 변수 타입입니다. 가장 기본이 되는 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

실수형은 실수를 저장할 수 있는 타입으로 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);
}

0개의 댓글