프로그램은 자료구조를 통해 데이터를 구성하고 표현하며 알고리즘을 통해 문제를 해결한다. 데이터 표현에 따라 문제를 해결하는 방법 알고리즘이 달라지기 때문에 데이터를 얼마나 잘 다루느냐가 중요하다.
자바에서 데이터 타입은 크게 기본타입(primitive type)과 참조타입(reference type)으로 나눌수 있다.
- 데이터의 실제 값을 의미한다.
- 정수타입(byte, short, int, long), 실수 타입(double, float), 문자 타입(char), 논리 타입(boolean)
- 데이터가 저장된 주소값을 의미한다.
- 객체의 주소를 저장, 8개의 기본형을 제외한 나머지 타입
정수는 byte, short, int, long 네 개의 타입이 있으며 저장할 수 있는 값의 범위가 서로 다르다. 예전에는 메모리의 용량이 넉넉하지 않아 필요에 따라 변수의 자료 범위를 변경해야 했다.
근래에는 메모리 용량이 부족한 경우가 거의 없기 때문에 정수형을 사용할 때 일반적으로 int형을 사용하며, int형이 정수형의 기본형이다.
변수의 값이 자료형의 범위를 넘을 경우 오버플로우(overflow) 또는 언더플로우(underflow)가 발생하기 때문에 필요에 따라 long과 같은 타입을 사용한다. 하지만 너무 남발하면 성능에 문제가 생길 수 있다.
실수는 소수점을 가지는 값을 의미하며 float, double 두 개의 타입을 가지고 있다. 컴퓨터는 실수를 저장할 때 부동소수점 표현 방식으로 저장하는데, 이러한 방식은 효율적이지만 약간의 오차를 갖는데 이 오차는 실수를 더 정밀하게 표현할수록 줄어든다. 따라서 double형이 float형 보다 더 큰 실수를 저장할 수 있으며 더 정확하게 저장할 수 있는 차이가 있다.
논리 타입은 boolean형 한가지 뿐이고, boolean은 true, false로 저장할 수 있는 데이터 타입이다. boolean은 단순히 참과 거짓을 0과 1로 저장하므로 JVM이 다룰 수 있는 데이터의 최소 단위가 1byte이기 때문에 1byte의 크기를 차지한다.
boolean은 컴퓨터에 명령을 내릴 때 특정 조건을 설정해줘야 할때 조건문에 조건을 할당할 때 사용할 수 있다.
char 타입의 변수는 단 하나의 문자만 저장할 수 있다. 여러 문자를 저장하기 위해서는 문자열(String)을 사용해야 하며 자바에서 문자는 무자열과 다른 개념이기 때문이다.
char letter = 'A'; // char 타입 letter라는 변수에 'A'라는 값을 대입한다.
char letter = 'ABC'; //에러가 발생한다.