728x90
Primitive type은 우리가 흔하게 알고있는 int, float 등을 뜻한다.
Reference type은 자료구조이다. Arruy, class , interface 등이 속한다. 다른 점은 value 자체를 가리키는 것과 달리 레퍼런스는 주소를 가리키는 포인터형식이다.
Java 에는 포인터가 없다. 그러나 포인터가 없다는게 사용자 입장에서 없다는거지 Java는 활발하게 사용중이다.
컴퓨터구조적으로 들어가면 벨류는 스택에서 관리된다. 그러나 Reference들은 크기를 가변적으로 할당해줘야하기 때문에 동적 메모리 Heap에 저장된다.
이러한 형태로 포인터값들이 힙의 값을 가리키고 있다.
Runtime Data Area : 런타임에 저장되는 데이터들. 컴파일타임에 정해지지 않고 런타임에 정해지기 때문에 Dynamic 이라고도 할 수 있다.
- Method, Heap, Stack Area
레퍼런스들의 비교법
레퍼런스 변수는 겉으로보이는 값이 아닌 Pointer로서 주소를 가리키고 있다. 때문에 일반적인 == 연산으로는 원하는 값이 안나올 수 있다.
public class SoftwareProject {
public static void main(String[] args) {
int[] arr1;
int[] arr2;
int[] arr3;
arr1 = new int[] { 1, 2, 3 };
arr2 = new int[] { 1, 2, 3 };
arr3 = arr2;
System.out.println(arr1 == arr2);
System.out.println(arr2 == arr3);
}
}
이 코드의 결과는 false true 이다.
값이 같다고 true가 나오지 않는다. 가리키는 주소가 같아야 true가 나온다.
'Dev > Java' 카테고리의 다른 글
Java의 객체 정렬과 객체 우선순위 큐 (0) | 2024.06.27 |
---|---|
Java 기초 체력 기르기 (0) | 2024.04.13 |
Java - 입력: BufferedReader, StringTokenizer (0) | 2023.12.19 |
Java - 문자열 자르기, 문자열 교체, 문자열 카피 (0) | 2023.04.25 |