값(data) -> 문자
-> 숫자 -> 정수
-> 실수
자료형(data type) : 값(data)의 종류(type)에 따라 값이 저장될 공간의 크기와 저장형식을 정의한 것
-> 종류 : 문자형(char), 정수형(byte, short, int, long), 실수형(float, double) 등
기본형 변수 : 실제 값(data)을 저장
참조형 변수 : 어떤 값이 저장되어 있는 주소(memory address)를 값으로 저장
자바는 참조형 변수 간의 연산을 할 수 없음 -> 연산에 사용되는 변수는 모두 기본형 변수
기본형(primitive type)
- 논리형(boolean), 문자형(char), 정수형(byte, short, int, long), 실수형(float, double) 계산을 위한 실제 값을 저장한다. -> 총 8개
참조형(reference type)
- 객체의 주소를 저장한다. 8개의 기본형을 제외한 나머지 타입
참조형 변수 선언 방법
클래스이름 변수이름; //변수의 타입이 기본형이 아닌 것들은 모두 참조변수이다.
Date today = new Date();
객체를 생성하는 new의 결과는 생성된 객체의 주소이다. 이 주소가 대입연산자에 의해서 참조변수 today에 저장되는 것.
Q. 자료형(data type)과 타입(type)의 차이가 뭔가요?
A. 기본형은 저장할 값(data)의 종류에 따라 구분 되므로 기본형의 종류를 얘기할 때 '자료형(data type)'이라는 용어 사용. 하지만 참조형은 객체의 주소를 저장하므로 값이 아닌 객체의 종류에 따라 구별되기 때문에 '타입(type)'을 사용한다. '타입(type)'이 자료형(data type)을 포함하는 넓은 의미의 용어 이므로 굳이 구분하지 않아도 된다.
논리형 - boolean
-> true와 false 중 하나를 값으로 가지며, 조건식과 논리적 계산에 사용된다.
문자형 - char
-> 문자를 저장하는데 사용되며, 변수에 하나의 문자만 저장할 수 있다.
정수형 - byte, short, int, long
-> 정수를 저장하는데 사용되며, 주로 int가 사용된다. byte는 이진 데이터를 다둘 때 사용되며, short는 C언어와 호환을 위해서 추가되었다.
실수형 - float, double
-> 실수를 사용하는데 사용되며 주로 double이 사용된다.
기본형 종류와 크기
- boolean은 true와 false 두 가지 값만 표현할 수 있으면 되므로 가장 작은 크기인 1byte
- char은 자바에서 유니코드(2byte 문자 체계)를 사용하므로 2byte
- byte는 크기가 1byte라서 byte
- int(4byte) 기준으로 짧아서 short(2byte) 길어서 long(8byte)
- float는 실수값을 부동소수점(floating-point)방식으로 저장하기 때문에 float
- double은 float보다 두배의 크기(8byte)를 갖기 때문에 double
기본형의 크기와 범위
정수형(byte, short, int, long)의 경우 -2(n-1) ~ 2(n-1) (n은 bit수)
int타입의 변수는 대략 10자리 수(약 20억)의 값을 지정할 수 있으며, 7~9자리 수를 계산할 땐 넉넉하게 long(약 19자리) 변수를 선언하는 것이 좋다
실수형의 경우 정수형과 저장방식이 달라 훨씬 큰 값을 표현할 수 있으나, 오차가 발생할 수 있다. 그래서 정밀도(precision)가 중요한데, 정밀도가 높을수록 발생할 수 있는 오차의 범위가 줄어든다.
(float의 정밀도 : 7자리, double의 정밀도 : 15자리)
상수(constant) : 값을 저장할 수 있는 공간이지만, 변수와 달리 한 번 값을 저장하면 다른 값으로 변경할 수 없다. 변수 타입 앞에 final 키워드를 붙여주면 사용할 수 있다.
final int MAX = 10; //상수 MAX 선언 & 초기화
상수는 반드시 선언과 동시에 초기화 해야한다.
final int MAX_SPEED; //에러. 상수는 선언과 동시에 초기화해야 함.
final int MAX_VALUE = 100; //정상. 선언과 동시에 초기화했음
MAX_SPEED = 200; //에러. 상수의 값은 변경할 수 있음.
상수의 이름은 대문자로 하는 것이 암묵적인 관례이며, 여러 단어로 이루어져있는 경우 '_'로 구분한다.