자바의 변수 데이터 타입을 가장 크게 보면 기본형과 참조형으로 분류할 수 있다. 사용하는 값을 직접 넣을 수 있는 기본형, 그리고 방금 본 배열 변수와 같이 메모리의 참조값을 넣을 수 있는 참조형으로 분류할 수 있다.
int
long
double
boolean
처럼 변수에 사용할 값을 직접 넣을 수 있는 데이터 타입을 기본형이라고 한다.int[] students
와 같이 데이터에 접근하기 위한 참조(주소)를 저장하는 데이터 타입을 참조형(Reference Type)이라 한다. 객체나 클래스를 담을 수 있는 변수들도 모두 참조형이다.사실
String
은 클래스이기 때문에 참조형 변수이다. 하지만 자주 사용하기 때문에 기본형 처럼 문자 값을 바로 대입할 수 있는 편의 기능을 제공한다.
기본형과 참조형의 변수 대입은 모두 값을 복사해서 대입해준다 를 기억하면 쉽게 이해할 수 있다.
int a = 10;
int b = a;
a = 20;
int b = a
는 위의 그림과 같이 변수 b
가 저장될 메모리 공간을 확보한 후에 a
의 값인 10을 복사하여 b
에 대입해주기 때문이다. 따라서 a
b
는 완전히 독립된 메모리 공간을 가지고 있기 때문에 a
혹은 b
가 변경되더라도 서로에게 영향을 주지 않는다.