Java 변수 타입 기본형, 참조형
변수의 데이터 타입은 크게 두 가지로 분류될 수 있다.
- 기본형(Primitive Type): 변수에 직접 사용하는 Value을 삽입하는 타입
- 대표적인 변수: int, long, double, boolean
- 참조형(Reference Type): 변수에 저장된 메모리 Address를 삽입하는 타입
- 대표적인 배열 또는 객체: int[], double[], new ArrayList<>()
기본형은 직접 값을 넣고 사용할 수 있지만, 참조형 변수는 위치(참조값)만 알고 있기 때문에 사용하려면 실체가 있는 위치로 이동해야 한다.
값 할당
- 기본형: 리터럴 10, 20 와 같은 값을 직접 할당할 수 있다.
- 참조형: 사용하는 리터럴 값을 변수에 담을 수 없다. 실제 객체의 참조 주소를 저장하고, 참조 주소로 사용하는 것은 객체와 배열이 있다.
- 객체는 dot(.) 을 통해서 메모리에 생성된 객체를 찾아간다.
- 배열은 []를 통해 메모리에 생성된 배열을 찾아간다.
값 계산
- 기본형: 변수에는 값을 가지고 있고, 그대로 사용하고 계산할 수 있음
- 참조형: 변수에는 참조 주소만 가지고 있고, 참조 주소로 계산할 수 없음
- 참조 주소로 직접 가야 계산이나 사용할 수 있다.
값 계산 코드 예시
기본형
int x = 10, y = 11;
int sum = x + y;
- 기본형은 실제 사용하는 값이 담겨 있어서 연산이 가능하다.
참조형
String[] s1 = new String[10];
String[] s2 = new String[10];
s1 + s2; // 오류 발생
- 참조형은 객체의 주소만 담겨 있기 때문에, 참조값은 계산에 사용할 수 없으므로 오류가 발생한다.
연산이 필요하다면 객체의 기본형 멤버 변수에 접근하여 계산을 하도록 한다.
int[] ss = new int[10];
ss[0] = 100; // 배열의 객체에 접근하여 100 갑 할당
System.out.println(ss[0]); // 배열의 객체에 접근하여 100 갑 출력
기본형, 참조형 변수 이름 짓기
개발 스타일을 일관되게 해야 이것이 참조형인지 기본형인지 분간할 수 있다.
- 기본형 변수는 앞글자가 소문자로 시작해야한다.
- 참고로 기본형 int, long, double, boolean 변수와 같이 사용자 지정 타입을 만들 수 없다.
- 참조형 변수는 앞글자가 대문자로 시작해야한다.
- 참조형은 Student, ProductOrder 와 Java에서 제공 안되는 것을 개발자가 사용자 정의 타입으로 정의를 내려 사용할 수 있게 한다.