2. 데이터 타입

고은·2022년 7월 28일
0

자바 초보 탈출기

목록 보기
7/14

모든 변수에는 타입(type :형)이 있으며, 타입에 따라 저장할 수 있는 값의 종류와 범위가 달라진다. 변수를 선언할 때 주어진 타입은 변수를 사용하는 도중에 변경할 수 없다. 따라서 변수를 선언할 때 어떤 타입을 사용할지 충분히 고민해야 한다.

기본 (원시: primitive) 타입

기본(원시) 타입이란 정수, 실수, 문자, 논리 리터럴을 직접 저장하는 타입을 말한다.
정수 타입에는 byte, char, short, int, long이 있고,
실수 타입에는 float, double이 있다.
그리고 논리 타입에는 boolean이 있다.

1byte = 8bit

정수타입 (byte, char, short, int, long)

정수 타입에는 모두 다섯 개의 타입이 있으며 저장할 수 있는 값의 범위가 서로 다르다.

자바는 기본적으로 정수 연산을 int 타입으로 수행한다.
그렇기 때문에 저장하려는 값이 정수 리터럴이라면 특별한 이유가 없는 한 int 타입 변수에 저장하는 것이 좋다. byte와 short가 int보다는 메모리 사용 크기가 작아서 메모리를 절약할 수는 있지만, 값의 범위가 작은 편이라서 연산 시에 범위를 초과하면 잘못된 결과를 얻기 쉽다.

바이트 타입

byte 타입은 색상 정보 및 파일 또는 이미지 등의 이진 (바이너리) 데이터를 처리할 때 주로 사용된다. byte 타입은 정수 타입 중에서 가장 작은 범위의 수를 저장하는데, 표현할 수 있는 값의 범위는 -128~127(-27~27-1)이다.
양수가 27인 이유는 0이 포함되기 때문이다.
만약 -128~127을 초과하는 값이 byte 타입 변수에 저장될 경우 컴파일 에러가 발생한다.
byte 타입이 왜 -128~127까지 정수값을 저장하는지 알아보자.
byte 타입은 1byte, 즉 8bit 크기를 가지므로 0과 1이 8개로 구성된 이진수로 표현이 가능하다.
최상위 비트 (MSB: Most Significant Bit)는 정수값의 부호를 결정한다.
최상위 비트가 0이면 양의 정수, 1이면 음의 정수를 뜻한다.
실제 정수값은 나머지 7개의 bit로 결정된다.
최상위 비트가 1인 음수의 경우에는 나머지 7개의 bit를 모두 1의 보수 (1은 0으로, 0은 1로)로 바꾸고 1을 더한 값에 -를 붙여주면 십진수가 된다.

char타입

자바는 모든 문자를 유닡코드로 처리한다. 유니코드는 세계 각국의 문자들을 코드값으로 매핑한 국제 표준 규약이다. 유니코드는 하나의 문장레 대해 하나의 코드값을 부여하기 때문에 영문 'A' 및 한글 '가'도 하나의 코드값을 갖는다. 유니코드는 0~65535 범위의 2byte 크기를 가진 정수값이다.
자바는 하나의 유니코드를 저장하기 위헤 2byte 크기인 char 타입을 제공한다.
유니코드는 음수가 없기 때문에 char 타입의 변수에는 음수 값을 저장할 수 없다.
char 타입의 변수라면 유니코드에 해당하는 문자를 출력 할 수 있다
(ex_ int uniCode = c1;)
만약 문자열을 저장하고 싶다면 'String' 변수를 선언하고 ""로 감싼 문자열 리터럴을 대입하면 된다.

int 타입

4byte로 표현되는 정수값을 저장할 수 있는 데이터 타입 (-231~(231-1))
int 타입은 자바에서ㅜ 정수 연산을 하기 위한 기본 타입이다.
byte 타입 또는 short 타입의 변수를 + 연산하면 int 타입으로 변환된 후 연산되고 연산의 결과 역시 int 타입이 된다.

long 타입

8byte로 표현되는 정수값을 저장할 수 있는 데이터 타입.
수치가 큰 데이터를 다루는 프로그램에서는 long 타입이 필수적으로 사용된다.
대표적인 예시 : 은행 및 우주 관련 프로그램

실수 타입 (float, double)

실수 타입은 소수점이 있는 실수 데이터를 저장할 수 있는 타입으로, 메모리 사용 크기에 따라 float, double이 있다.

float = 4byte , double = 8byte

float 과 double의 메모리 사용 크기는 각각 int와 long 과 같지만, 정수타입과는 다른 저장 방식 때문에 정수 타입보다 훨씬 더 큰 범위의 값을 저장할 수 있다. 실수는 정수와 달리 부동소수점 방식으로 저장된다.
float 보다 double이 더 정밀한 값을 저장할 수 있기 때문에 높은 정밀도를 요구하는 계산에서는 double을 사용해야 한다. 자바는 실수 리터럴의 기본 타입을 double로 간주한다.

논리 타입 (boolean)

boolean 타입은 1byte로 표현되는 논리값을 저장할 수 있는 데이터 타입이다.
상태값에 따라 조건문과 제어문의 실행 흐름을 변경하는데 주로 이용된다.

profile
비전공자 코린이의 개발 일지 🏋️‍♀️

0개의 댓글