Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

개발자 도전기

[JAVA] 참조 타입 본문

개발공부/JAVA

[JAVA] 참조 타입

jnnjnn 2024. 2. 27. 23:44

자바에서 데이터 타입은 기본 타입과 참조 타입으로 나뉜다. 기본 타입으로 선언된 변수는 값 자체를 저장하고 있지만 참조 타입으로 선언된 변수는 객체가 생성된 메모리 번지를 저장한다. 참조 타입으로는 배열, 열거, 클래스, 인터페이스가 있다.

 

변수들은 모두 스택이라는 메모리 영역에 생성되는데 참조 타입의 경우 힙 메모리 영역의 참조 타입 번지를 저장한다.

 

참조 번지의 값을 알고 싶으면 System.identityHashcode()를 사용하면 된다

// new : 메모리 공간 확보
        // 연산결과 : 확보된 메모리 공간 위치(주소, hashCode)

        int[] arr = new int[]{2, 3};

        // arr가 가진 실제 값을 알고 싶을 때
        // System.identityHashCode 메소드 사용
        int address = System.identityHashCode(arr);
        System.out.println(address);

 

참조 타입의 값을 == 또는 !=로 비교할 때는 힙 영역에 저장된 부분을 비교하는 것이 아닌 참조 타입의 번지를 저장하는 것이다.

 

        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); // false
        System.out.println(arr2 == arr3); // true;

 

참조 타입 변수는 아직 번지를 저장하지 않았다는 뜻으로 null 값을 가질 수 있다.

이때 변수가 null 값을 가진 객체를 사용하려고 할 때 NullPointerException이라는 예외가 발생한다.

 

 

'개발공부 > JAVA' 카테고리의 다른 글

[JAVA] 2차원 배열, 다차원 배열  (0) 2024.02.29
[JAVA] 배열  (0) 2024.02.27
[JAVA] break 문 / continue 문  (0) 2024.02.26
[Java] do- while 문  (0) 2024.02.26
[코딩공부] switch문, switch expression  (0) 2024.02.24