참조형 변수

TIL·2022년 12월 12일
0

Java (최은빈)

목록 보기
13/27

참조 (reference)

스택의 변수가 힙의 데이터를 가르킨다 (변수에 데이터 아닌 주소 저장됨)



Stack

  • 원시타입(정수/실수/문자/논리), 작은 데이터 저장
  • 데이터를 변수에 저장



Heap

  • 객체 메모리의 주소를 스택 변수에 저장, 객체 데이터는 힙에 저장
  • 참조 타입(배열/열거/클래스/인터페이스), 큰 데이터 저장, 동적인 메모리
  • JVM, GC 가 관리



Method Area

  • 클래스 로더가 클래스 돌면서 정적필드/상수, 메소드, 생성자 로딩 (정적인 메모리)

  • Permanent (~Java7)
    • 정적변수/상수, 메소드, 필드
    • JVM이 관리하기 어려움
    • 사이즈 한정적
  • Metaspace (Java8~)
    • Permanent에서 정적변수와 상수만 Heap에 넣어 Metaspace라 명명함
    • JVM이 관리하여 미사용시 GC가 메모리에서 객체 삭제 (Heap) -> 공간 더 이득
String a = "hello"; // 200번지
a = "world"; // 300번지 // JVM의 GC가 참조되지 않는 데이터 "hello" 메모리에서 자동 삭제



null

  • 참조변수의 초기화에 사용
  • null도 null을 위한 주소값이 따로 있다.
  • nullPointException
public class NullPointerExceptionExample {
    public static void main(String[] args) {
        String str = null;
        System.out.println(str.length()); // null.~()
	    
        int[] arr = null;
	    System.out.println(arr.length); // null.~()
	}
}



참조 변수의 동등 비교

  • ==, != : 주소값 비교
  • .equals() : 내용물 비교 (for문)

0개의 댓글

관련 채용 정보