Home > 2024 > Java > ☕️[Java] 기본형과 참조형(1)

☕️[Java] 기본형과 참조형(1)
Java Programming Language

기본형과 참조형(1)

자바에서 참조형을 제대호 이해하는 것은 정말 중요합니다.

변수의 데이터 타입을 가장 크게 보면 기본형과 참조형으로 분류할 수 있습니다.

  • 사용하는 값을 변수에 직접 넣을 수 있는 기본형
  • 이전 포스팅의 예시 코드에서 본 Student student1 과 같이 객체가 저장된 메모리의 위치를 가르키는 참조값을 넣을 수 있는 참조형으로 분류할 수 있습니다.

  • 기본형(Primitive Type)
    • Int, long, double, boolean 처럼 변수에 사용할 값을 직접 넣을 수 있는 데이터 타입을 “기본형” 이라고 합니다.
  • 참조형(Reference Type)
    • Student student1, int[] students와 같이 데이터에 접근하기 위한 참조(주소)를 저장하는 데이터 타입을 “참조형” 이라고 합니다.
      • 참조형은 객체 또는 배열에 사용됩니다.

쉽게 이야기해서 기본형 변수에는 직접 사용할 수 있는 값이 들어있지만 참조형 변수에는 위치(참조값)이 들어가 있습니다.

참조형 변수를 통해서 뭔가 하려면 결국 참조값을 통해 위치로 이동해야 합니다.

기본형 vs 참조형 - 기본

  • “기본형” 은 숫자 10, 20과 같이 실제 사용하는 값을 변수에 담을 수 있습니다.
    • 때문에 해당 값을 바로 사용할 수 있습니다.
  • “참조형” 은 실제 사용하는 값을 변수에 담는 것이 아닙니다.
    • 이름 그대로 실제 객체의 위치(참조, 주소)를 저장합니다.
      • 참조형에는 객체와 배열이 있습니다.
        • “객체”.(dot)을 통해서 메모리 상에 생성된 객체를 찾아가야 사용할 수 있습니다.
        • “배열”[]를 통해서 메모리 상에 생성된 배열을 찾아야가 사용할 수 있습니다.

기본형 vs 참조형 - 계산

  • 기본형은 들어있는 값을 그대로 계산에 사용할 수 있습니다.
    • 예) 더하고 빼고, 사용하고 등등,(숫자 같은 것들은 바로 계산할 수 있습니다.)
  • 참조형은 들어있는 참조값을 그대로 사용할 수 없습니다.
    • 주소지만 가지고는 할 수 있는게 없습니다.
    • 주소지에 가야 실체가 있기 때문입니다.
      • 예) 더하고 빼고 사용하고를 못합니다. 참조값만 가지고는 계산할 수 있는 것이 없습니다.

“기본형은 연산이 가능하지만 참조형은 연산이 불가능합니다.”

int a = 10, b = 20;
int sum = a + b;
  • 기본형은 변수에 실제 사용하는 값이 담겨있습니다.
    • 따라서 +, -와 같은 연산이 가능합니다.
Student s1 = new Student();
Student s2 = new Student();
s1 + s2 // 오류 발생.
  • 참초형은 변수에 객체의 위치인 참조값이 들어있습니다.
    • 참조값은 계산에 사용할 수 없습니다. 따라서 오류가 발생합니다.

“물론 다음과 같이 .(dot)을 통해 객체의 기본형 멤버 변수에 접근한 경우에는 연산을 할 수 있습니다.”

Student s1 = new Student();
s1.grade = 100;
Student s2 = new Student();
s2 grade 90;
int sum = s1.grade + s2.grade // 연산 가능

쉽게 이해하는 팁
“기본형을 제외한 나머지는 모두 참조형입니다.”

  • 기본형은 소문자로 시작합니다.
    • int, long, double, boolean 모두 소문자로 시작합니다.
      • 기본형은 자바가 기본으로 제공하는 데이터 타입입니다.
      • 이러한 기본형은 개발자가 새로 정의할 수 없습니다.
      • 개발자는 참조형인 클래스만 직접 정의할 수 있습니다.
  • 클래스는 대문자로 시작합니다.
    • Student, String, 등…
      • 클래스는 모두 참조형입니다.

“참고 - String”
자바에서 String은 특별합니다.
String은 사실 클래스입니다. 즉, 참조형입니다.
그런데 기본형처럼 문자 값을 바로 대입할 수 있습니다.
문자는 매우 자주 다루기 때문에 자바에서 특별하게 편의 기능을 제공합니다.
String에 대한 자세한 내용은 추후에 설명하겠습니다.