티스토리 뷰

Java

[Java] 자료형(data type)의 종류

nc2u 2018. 10. 27. 18:59


자료형의 종류

PHP나 Python 등을 먼저 접했던 사람 뒤 늦게 Java를 공부하게 된다면 과연 이럴 필요가 있을까 싶을 정도로 유난히도 자료형을 엄격하게 구분한다는 점을 느끼게 될 것이다. 처음 Java를 공부하자니 이런 것을 익히려고 에너지를 낭비해야 하나 싶기도 하지만 기초가 중요한 것이니 일단 기록한다.

자바에는 크게 기초형(primitive type)과 참조형(reference type)의 자료형이 있다. 기초형은 다시 정수형, 실수형, 문자형, 논리형으로 분류할 수 있고 참조형에는 클래스, 배열, 인터페이스가 있다. 기초형의 변수에는 변수의 값이 저장되어 있으나 참조형의 변수에는 객체의 위치(참조 또는 주소)가 들어가 있다.

참조형 자료형의 경우 실제 값이 아닌 실제 객체를 가리키는 주소를 저장한다는 점에 유의하여야 한다.

정수형

정수형은 정수를 표현하는데 사용되고 음수가 허용된다. 다음 4가지 정수형이 있다.

 

자료형크기
(바이트)
최소값최대값
byte1바이트-128127
short2바이트-3276832767
int4바이트-21474836482147483647(20억 정도)
long8바이트-92233720368547758089223372036854775807

정수형 중에서 가장 많이 사용되는 형은 int형이다.  약 -21억에서 21억 정도의 정수를 표현할 수 있다. 만일 이보다 더 큰수를 표현해야 하는 경우 long을 사용하고 short와 byte는 적은 수의 표현으로 충분하고 메모리가 부족한 상황에서 사용한다.

 


부동소수점형

부동소수점(floating point)형은 실수를 나타내는 데 사용된다. 부동소수점형에는 float와 double형이 있다.

double이라는 이름이 붙은 이유는 float형보다 2배의 정밀도를 가지기 때문이다. 정밀도(precision)는 변수가 얼마나 많은 유효 숫자를 가질 수 있느냐이다. float의 정밀도는 6~7개 정도의 유효숫자를 갖는데, double은 약 15개 정도의 유효숫자를 가진다. 

대부분의 경우 double을 사용하고 float는 메모리 용량이 제한된 장치에서 사용하는 것이 좋다.

부동소수점형 리터럴은 double형이 기본이다. 따라서 다음과 같이 부동소수점형 리터럴을 float형 변수에 저장하면 오류가 된다.

float temperature = 12.3;           // 12.3은 double형이므로 오류!

12.3F와 같이 숫자의 끝에 f나 F를 붙이면 float형 리터럴이 된다.

float temperature = 12.3F; // OK!

JDK 7부터 부동소수점형 리터럴에도 밑줄 기호를 사용할 수 있다.

double number = 123_456_789.0; // 밑줄 기호 사용 가능

 


문자형

문자형인 char는 하나의 문자를 저장할 수 있다. 자바에서는 유니코드(unicode)를 지원하기 위해 문자 하나가 16비트로 표현된다. 유니코드 규격 중에서 UTF-16 코딩 규격을 사용한다.

유니코드를 사용하기 위해 한글의 경우, 그대로 입력해도 되고 16진수를 이용해서 ‘\u0000′(0)에서 ‘uffff'(65536)과 같이 표현해도 된다.

char ch1 = '가';
char ch2 = '\uac00'; // '가'를 나타낸다.


문자형 리터럴은 하나의 유니코드(unicode)문자를 표현하며 단일 따옴표를 사용하여 표시한다. 특수 문자(제어 문자들과 출력되지 않는 문자)들은 문자 앞에 역슬래쉬(\)를 사용하여 나타낸다. 자바에서 지원되는 특수문자들은 다음 표와 같다.

특수문자 표기의미
\\역슬래시
\b백스페이스
\r캐리지 리턴
\f폼피드
\t수평 탭
\n새 라인(줄바꿈)
\’단일 따옴표
\”이중 따옴표
\udddd16진수 dddd에 해당하는 유니코드 문자

기초형 자료형인 char의 경우 문자열이 아닌 하나의 문자를 저장한 값이라는 점에 유의하여야 한다. (하나 이상의 문자의 집합인 문자열을 변수에 저장하려는 경우 char 문자형이 아닌 String 객체를 사용하여야 한다. – String 객체에 대한 정리는 추후에 다시 포스팅해 보려 함)



논리형

논리형(boolean type)은 참과 거짓을 나타내는 데 사용된다. 논리형은 true 또는 false만을 가질 수 있으며 논리 연산을 수행하는 데 사용된다.


C나 C++ 등의 언어에서는 정수값이 논리형으로 사용된다. 0은 false에 해당되고 0이 아닌 값은 true에 해당된다. 그러나 자바에서는 그렇지 않다. 자바에서는 정수값을 논리형으로 사용할 수 없다.

 


'Java' 카테고리의 다른 글

[Java] super 키워드  (0) 2018.10.27
[Java] 고급 배열  (0) 2018.10.27
[Java]객체 지향 프로그래밍의 특징  (0) 2018.10.27
[Java] 내장 클래스  (0) 2018.10.27
[Java] 접근 제어 지정자  (0) 2018.10.27
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크