본문 바로가기

카테고리 없음

Primitive 와 Reference

primitivereference의 개념 차이를 쉽게 이해시키기 위한 예시로 이 두 개념은 주로 프로그래밍 언어에서 데이터 타입에 대해 설명할 때 사용됩니다.

 

1. Primitive 

  • 의미: 원시 데이터 타입, 즉 단순하고 기본적인 데이터 타입.
  • 특징: 메모리에 값 자체를 저장하며, 다른 변수에 값을 복사하면 독립적인 복사본이 생성됩니다.
    • 예: 숫자(int, float), 문자(char), 불리언(boolean).
  • 비유: 소문자는 작고 간단하며 독립적이므로 Primitive에 비유.

 

2. Reference 

  • 의미: 참조 데이터 타입, 즉 복잡한 구조를 가지는 데이터 타입.
  • 특징: 메모리에 값이 아닌 값을 가리키는 주소(참조)를 저장하며, 다른 변수에 참조를 복사하면 같은 주소를 가리키게 됩니다.
    • 예: 객체(object), 배열(array), 리스트(list).
  • 비유: 대문자는 더 크고 복잡하며 참조를 통해 연결되므로 Reference에 비유.

비유의 의미

  • 소문자 = Primitive: 간단하고 독립적으로 존재.
  • 대문자 = Reference: 크고 연결된 구조를 통해 동작.
 
 
 

1. Primitive (원시)

  • 원래 의미:
    "Primitive"라는 단어는 기본적인 또는 가장 초기의라는 뜻을 가지고 있습니다.
    이는 어떤 시스템이나 구조에서 더 이상 쪼갤 수 없는 가장 기본적이고 단순한 형태를 뜻합니다.
  • 맥락에 따른 의미:
    • 일반적 의미: 가장 기본적인 요소, 초기 단계의 것.
    • 컴퓨터 과학에서:
      • Primitive는 단순한 데이터 타입을 가리킵니다.
        예: 정수, 실수, 문자, 불리언 등.
      • 이런 데이터 타입은 언어의 기본 블록이며, 시스템에서 특별한 처리가 필요하지 않습니다.

2. Reference (참조)

  • 원래 의미:
    "Reference"는 참조하다, 언급하다 또는 연결점이라는 뜻을 가지고 있습니다.
    이는 특정한 대상을 가리키거나 지목한다는 개념에서 비롯됩니다.
  • 맥락에 따른 의미:
    • 일반적 의미: 어떤 대상을 나타내기 위해 사용하는 표시나 연결.

예: 책의 참고문헌(reference)처럼, 정보를 찾아가는 길잡이 역할.

  • 컴퓨터 과학에서:
    • Reference는 어떤 값이 저장된 메모리의 위치(주소)를 가리키는 것을 뜻합니다.
    • 실제 데이터를 복사하지 않고, 데이터가 저장된 메모리 위치를 다른 변수에 공유하는 방식입니다.
    • 객체(Object)나 배열(Array)와 같은 복합 데이터 구조가 이에 해당합니다.

요약

  • Primitive: 기본적이고 독립적인 데이터. 더 단순한 구조로 나눌 수 없음.
    • 예: 정수(int), 실수(float), 문자(char).
  • Reference: 어떤 데이터를 직접 가지지 않고, 데이터를 가리키는 주소를 저장.
    • 예: 객체(Object), 배열(Array), 리스트(List).

이 두 용어는 컴퓨터 과학에서 데이터의 구조와 동작 방식을 이해하는 데 매우 중요한 개념입니다.

 

 

이유

Class 자체는 설계도(blueprint)이고, 이를 기반으로 생성된 객체는 메모리의 특정 주소를 참조하는 데이터입니다. 객체를 변수에 할당하면, 그 변수는 실제 데이터를 저장하는 것이 아니라 객체가 메모리에 저장된 주소(reference)를 가리키게 됩니다.

 

 

Class와 참조 변수의 특징

  1. **Class 기반의 객체는 항상 참조 타입(Reference Type)**입니다.
    • 변수가 객체를 직접 저장하지 않고, 객체의 메모리 주소를 저장합니다.
  2. 변수 간 복사는 주소를 공유합니다.
    • 같은 객체를 참조하기 때문에, 한쪽에서 값을 변경하면 다른 쪽에서도 반영됩니다.
  3. Primitive 타입과 다르게 독립적인 값 복사가 이루어지지 않음.
    • 객체를 복제하려면 명시적으로 복사(Clone)를 해야 합니다.