주로 사용하는 값의 종류, 즉 데이터의 타입은 크게 문자 와 숫자 로 나누어 볼 수 있다.
숫자는 다시금 정수 와 실수로 나누어 볼 수 있다.
문자는 다시금 문자 와 문자열로 나누어 볼 수 있다.
이러한
값의 종류,데이터의 타입에 따라서값이 저장될 공간의 크기와저장형식을 정의한 것을자료형이라고 한다.
정적 언어의 특성에 따라서, 컴파일 시점에 데이터의 타입(값의 종류)이/가 정해져있어야 하므로,
하나의 변수에 여러개의 타입을 저장할 수는 없다.
자료형은 다시금 기본형 와 참조형 으로 나누어볼 수 있다.
기본형 변수는 값 자체를 메모리에 저장하지만, 참조형변수는 메모리 주소를 변수에 저장한다.
기본형 변수 = data 자체
참조형 변수 = 메모리의 주소
즉 참조형 변수는 RAM 의 논리적 공간에 있는 메모리의 일련번호(주소)값을 변수에 저장하고 있는 것이다.
참조형 변수는 연산할 수 없다. 메모리 주소를 담고있므로 연산이 불가능하다.
연산이 일어나는 듯 보인다면, 기본형 변수 사이의 연산이 일어나는 것이다.
기본형(primitive type)
- 논리형 (boolean [1])
- 문자형(char[2])
- 정수형(byte[1], short[2], int[4], long[8])
- 실수형(float[4], double[8])
참조형(reference type)
기본형을 제외한 모든 타입, 객체의 주소 값을 저장하고 있다.
참조형 변수는 클래스를 타입으로 가진다.
즉, 클래스를 선언하는 행위 자체가 새로운 참조 타입을 스스로 정의하고 있는 것이다.
// 자료형은 기본형과 참조형으로 나눈다.
// 기본형 은 data 자체를 저장하고 있다.
char c = 'A';
// 참조형은 객체의 주소 값을 저장하고 있다.
// 변수가 클래스 타입이라면, 참조형 변수를 선언하는 것이다.
String str = new String("");
new 연산자 는 클래스의 생성자를 호출하고서 만들어진 객체 주소 값을 리턴하는 연산자이다.// 1. 생성자 호출로 객체가 생성된다.
// 2. new 연산자의 연산으로 객체 주소가 반환 된다.
// 3. 연산자 순서 상 대입연산자가 마지막이므로 객체 주소가 변수에 저장된다.
Date today = new Date();
참조형 변수에는 2가지 값만 들어간다.
객체의 메모리 주소null (주소 없음)8가지의 자료형으로 구분한다.
boolean 을 제외한 모든 기본형은 서로 간의 연산이 가능하다.( 전부 숫자로 표현 가능 )
int 는 CPU 가 가장 효율적으로 처리할 수 있는 타입이다.
정수 값의 크기는 -2^n-1 ~ (2^n-1)-1 범위를 가진다.
n 은 bit 를 의미하며, 1byte 는 8bit 이다.
int 타입 =
2^32-1~(2^32-1)-1의 범위 = 약 -21억 ~ 21억
7~9 자리 부터는 연산결과 까지 고려하여 long 을 사용하는 것이 좋다.부동소수점의 오차로 인하여 7자리가 넘어갈 경우 double 을 사용하는 것이 좋다.