기본형과 참조형

기본형(Primitive Type) : int, long, double, boolean 처럼 변수에 사용할 값을 직접 넣을 수 있는 데이터 타입을 기본형이라고 한다.

참조형(Reference Type) : Student, int[] 와 같이 데이터에 접근하기 위한 참조(주소)를 저장하는 데이터 타입을 참조형이라고 한다. 참조형은 객체 또는 배열에 사용된다.

  • String과 배열은 new 없이 바로 대입할 수 있다 <- 자바에서 편의 제공

자바에서 대원칙은 항상 변수의 값을 복사해서 대입한다. 따라서 변수 안에 주소가 들어있느냐, 값이 들어있는냐의 차이다. 메서드에 참조값(주소)를 전달하면 참조형 내 변수를 변경할 수 있다.

변수 종류

  • 멤버 변수(필드) : 클래스에 선언

  • 지역 변수: 메서드에 선언, 매개변수도 지역 변수의 한 종류

✅ 1. 기본형 (Primitive Types)

예시

int, long, float, double, char, boolean, byte, short

  • 저장 위치:

    • 스택(Stack) 메모리

    • 또는 힙(Heap) 안의 객체 안에 필드로 포함될 경우 그 객체의 일부로서 에 저장됨

int a = 10;
  • 위 예시에서 a는 스택에 저장되고, 값 10직접 스택에 저장됨.


✅ 2. 참조형 (Reference Types)

예시

String, Integer, List, User, 사용자 정의 클래스 등

  • 저장 위치:

    • 참조 변수 자체는 스택(Stack) 에 저장

    • 실제 객체는 힙(Heap) 에 저장됨

    • 스택의 참조 변수는 힙에 있는 객체의 주소를 가리킴

  • user 참조 변수는 스택에 저장

  • new User()로 생성된 객체는 에 저장됨

  • user는 힙에 있는 User 객체를 참조


🔍 그림으로 요약

기본형과 참조형의 메서드 호출

  • 자바에서 메서드의 매개변수(파라미터)는 항상 값에 의해 전달된다.

    • 기본형 : 메서드로 기본형 데이터를 전달하면, 해당 값이 복사되어 전달된다. 이 경우, 메서드 내부에서 매개변수(파라미터)의 값을 변경해도, 호출자의 변수 값에는 영향이 없다.

    • 참조형 : 메서드로 참조형 데이터를 전달하면, 참조값이 복사되어 전달된다. 이 경우, 메서드 내부에서 매개변수(파라미터)로 전달된 객체의 멤버 변수를 변경하면, 호출자의 객체도 변경된다.

변수의 값 초기화

  • 멤버 변수 : 자동 초기화

    • 인스턴스의 멤버 변수는 인스턴스를 생성할 때 자동으로 초기화된다.

  • 지역 변수 : 수동 초기화

    • 지역 변수는 항상 직접 초기화해야 한다.

Last updated