본문 바로가기

JAVA/혼자공부하는자바

[JAVA기초] 변수의 기본 타입(정수 데이터타입, 정수 리터럴)

728x90

프로그래밍에서의 변수를 선언하기 앞서 데이터가 어떻게 저장되고, 어떻게 처리되어야 하는지 미리 정해주어야 하기 때문에 데이터 타입을 지정해주어야 한다.

변수의 값 크기보다 선언되는 데이터 타입에 따라 사용되는 메모리의 양이 달라지기 때문에

용도에 맞는 적절한 데이터 타입을 사용하여야 한다. 정수를 표현하는 데이터 타입에는 'byte, short, int, long' 이 있지만 오늘날에는 메모리의 용량과 CPU의 처리속도(4byte 단위로 처리)가 늘어나서 정수형 데이터는 메모리 크기가 4byte인 int형을 사용하는 것이 가장 효율적이라고 한다.

 

 

변수의 기본 타입(Variable's Primitive Type)

구분 저장되는 값에 따른 분류 타입의 종류
기본 타입 정수 타입 byte, char, short, int, long
실수 타입 float, double
논리 타입 boolean

자바에서는 여러 형태의 타입을 미리 정의하여 제공하고 있는데, 이것을 기본 타입(primitive type)이라고 한다.

자바의 기본 타입은 모두 8종류가 있으며, 크게는 정수, 실수, 논리형으로 나눌 수 있다.

 

 

 정수 타입 (Integer Types)

 

byte : 하드웨어 제어, 네트워크 데이터 전달 시 사용

long : 은행이나 lab등 큰 숫자를 사용하는 곳에서 사용)

 

 

byte 타입으로 선언된 변수에는 byte의 값의 허용범위인 -128~127 내에서만 입력된다.

 

만약 해당 타입이 표현할 수 있는 범위를 벗어난 데이터를 저장하면, 오버플로우(overflow)가 발생해 전혀 다른 값이 저장될 수 있어서 에러가 발생한다.

 

 

long 타입으로 선언된 변수에 허용범위인 20000000000을 입력하자 에러가 발생했다.

그 이유는 자바컴파일러는 정수 리터럴을 기본적으로 int 타입으로 간주를 한다.

그렇기 때문에 컴파일 오류가 발생한다. 

 

 

int범위 이상의 값을 변수 값으로 지정해줄 때에는 int타입이 아니라 long타입이어야 함을 알려주기 위해 변숫값 뒤에 L을 붙여준다. (소문자나 대문자나 관계없으나 식별을 위해 L로 지정)

 

 

char 타입은 하나의 문자를 저장할 수 있는 타입이다.

문자를 표현하지만 문자를 유니코드로 변환하여 저장하기 때문에 정수 타입에 해당된다.

c1의 A를 출력하거나

c2의 65를 유니코드 문자로 변환하여 A로 출력할 수 있다.

 

char var1 = 'A';    //유니코드: 65

char var1 = 'B';    //유니코드: 66

char var1 = '가';   //유니코드: 44032

 

 

char는 정수 타입이므로 10진수 또는 16진수 형태로도 유니코드 저장 가능

 

char c = 65;          //10진수

char c = 0x0041;    //16진수

 

 

\u 리터럴을 붙여 유니코드임을 알리는 16진수로 표현하는 방식도 있다.

(\는 역슬래시로 이스케이프 문자라고 하며, 다음 문자가 특수문자를 알리는 기호를 뜻한다.)

 

한글 '가' 또한 저장을 할 수 있으며 '가'의 유니코드 번호인 44032 형식으로도 '가'를 출력할 수 있다.

후자의 방법으로 표현하는 방법은 거의 없으며 이해만 하고 넘어가도록 한다.

 

 

 

정수 리터럴(Integer literal)

  • 소스 코드에서 프로그래머에 의해 직접 입력된 값
  • 다음 경우를 자바에서 정수로 인식

 

위와 같이 같은 정수여도 리터럴의 타입을 구분하여 변수에 대입을 할 수 있다.

보통은 정수 변수 대입 값에는 리터럴에는 10진수를 사용하지만 하드웨어 제어, 색상 등을 표현할 때 위와 같은 방식을 사용하기도 한다.