HYOJIN LIM
by HYOJIN LIM
1 min read

Categories

CH05. 참조 타입

  1. 데이터 타입

    • 기본 타입

      • 정수타입 (byte, char, short, int, long)

      • 실수타입 (float double)

      • 논리타입 (boolean)

    • 참조타입

      • 배열타입

      • 열거타입

      • 클래스

      • 인터페이스

  2. 메모리 사용 영역

    • 메소드 영역

      • 클래스들을 클래스 로더로 읽어 클래스별로 런타임 상수풀, 필드 데이터, 메소드 데이터, 메소드 코드, 생성자 코드 등을 분류해서 저장한다.

      • JVM이 시작할 때 생성되고 모든 스레드가 공유하는 영역이다.

    • 힙 영역

      • 객체와 배열이 생성되는 영역이다.

      • JVM 스택 영역의 변수나 다른 객체의 필드에서 참조된다.

    • JVM 스택영역

      • 각 스레드마다 하나씩 존재한다.

      • 메소드를 호출할 때마다 프레임을 추가하고, 메소드가 종료되면 해당 프레임을 제거하는 동작을 수행한다.

      • 내부에는 로컬 변수 스택이 있는데, 초기화가 될 때 이 영역에 생성된다. (선언된 블록안에서만 존재하고 블록을 벗어나면 제거된다.)

  3. 참조 변수 ==, != 연산

    • == 혹은 != 연산은 동일한 객체를 참조하고 있는지를 알 수 있다.

    • 가지고 있는 값의 비교는 equals를 사용한다.

  4. null과 NullPointerException

    • 참조 타입 변수는 힙 영역의 객체를 참조하지 않는다는 뜻으로 null값을 가질 수 있다.

    • null로 초기화된 참조 변수는 스택 영역에 생성된다.

    • 참조 타입 변수가 null을 가질 때, 사용하게 된다면 NullPointerException이 발생한다

  5. String 타입

    • 리터럴 선언: String str = “문자열”

    • 객체 선언: String str = new String(“문자열”)

  6. 배열 타입

    • 배열: 같은 타입의 많은 양의 데이터를 다루기 위한 자료구조

    • 배열 복사

      • Shallow Copy: 참조값을 복사한다.

      • Deep Copy: 원본 참조변수가 가르키는 객체를 메모리 공간에 복사하여 생성한 후, 참조한다.

  7. 열거 타입

    • 몇 가지로 한정된 값만을 갖는 경우를 열거타입을 통해 표현한다.

    • 예시) 계절, 요일에 대한 데이터 등