Java

[Java] 05-1. 참조 타입과 참조 변수

noodle-dev 2024. 3. 20. 17:33

Chapter 05. 참조 타입

05-1. 참조 타입과 참조 변수

  • 기본 타입(primitive type)
    • 으로 선언된 변수는 실제 값을 변수 안에 저장
    • byte, char, short, int, long, float, double, boolean
  • 참조 타입(reference type)
    • 으로 선언된 변수는 메모리의 번지를 변수 안에 저장
    • array, 열거, class, interface
    • 힙 영역의 객체를 참조하지 않는다는 뜻으로 null 값을 가질 수 있다
    • null값도 초기값으로 사용할 수 있기 때문에 null로 초기화된 참조 변수는 스택 영역에 생성됨
    • 참조 변수가 null을 가지고 있을 경우, 참조 객체가 없으므로 참조 변수를 통해 객체를 사용할 수 없다. 만약 사용하면 NullPointerException 발생
  • JVM이 사용하는 메모리 영역
    • Method Area
      • JVM이 시작할 때 생성되고, 모든 스레드가 공유하는 영역
      • .class들을 클래스 로더로 읽어 클래스별로 static field, constant, method code, constructor code 등을 분류해서 저장
    • Heap Area
      • 객체와 배열이 생성되는 영역
    • Stack Area
      • 메소드를 호출할 때마다 push frame(프레임 추가), 메소드 종료되면 pop frame(프레임 제거)
  • String
    • String은 클래스이므로 참조 타입
    • 문자열을 String 변수에 저장한다(엄밀히 틀린 표현)
    • 문자열은 String 객체로 생성되고 변수는 String 객체를 참조한다. (True)
    • == 연산은 번지가 같은지 검사
    • .equals() 연산은 내부 문자열이 동일한지 검사