기본형
: int, long, double, boolean 처럼 변수에 사용할 값을 직접 넣을 수 있는 데이터 타입
참조형
: 객체 또는 배열과 같이 데이터에 접근하기 위한 참조(주소)를 저장하는 데이터 타입
쉽게말해 기본형
변수에는 직접 사용할 수 있는 값이 들어있고
참조형
변수에는 위치(참조값)이 들어가 있다 ex) 001x
참조형 변수를 통해서 먼가를 하려면 참조값을 통해 해당 위치로 이동해야 한다
참조형 변수는 참조값을 통해 같은 객체(인스턴스)를 공유한다
객체는 .
(dot)을 통해서 메모리 상에 생성된 객체를 찾아가야 사용할 수 있다
배열은 []
을 통해서 메모리 상에 생성된 배열을 찾아가야 사용할 수 있다
String은 클래스이다 -> 참조형
하지만 기본형처럼 문자 값을 바로 대입할 수 있다
문자는 자주 다루기 때문에 자바에서 특별하게 편의 기능을 제공!
✅ 참조형 대입
Data dataA = new Student();
Data dataB = dataA;
위 Data dataB = dataA;
은 실제 객체가 아닌, 객체의 위치를 가르키는 참조값
만 복사됨
즉 건물이 복사가 되는것이 아닌 건물의 위치인 주소만 복사되는 것!
만약 dataA.value = 20
이라면 dataB.value
의 값은 무엇이 나올까?
당연히 둘 중 하나가 값이 바뀌면 가리키고 있는 참조값이 같기 때문에 실제 인스턴스 값은 동일해진다
✅ null
null
이라는 특별한 값을 넣어둘 수 있음data = null // data 변수는 Data 인스턴스를 더이상 참조하지 않음
GC
: 가리비컬렉션으로 아무도 참조하지 않는 인스턴스를 제거해준다