원시(Primitive) 타입과 참조(Reference) 타입

2022. 2. 11. 15:00·Programming/Java


primitive type

- 실제 데이터 값을 저장하는 타입

- 스택에 값 존재

 

reference type

- 인스턴스 번지 값(주소 값)을 저장하는 타입

- 스택에 번지 값 존재

- 힙에 실제 값(인스턴스) 존재

 

reference 타입을 사용하는 이유는?

1. null을 담을 수 있는가?

- primitive type: X

- reference type: O 

2. 제네릭 타입을 사용할 수 있는가?

- primitive type: X

- reference type: O

 

primitve 타입을 사용하는 이유는? 

1. 접근 속도

primitive type: 스택에 메모리 존재

reference type: 참조 값은 스택, 실제 값은 힙에 존재. 실제 값 필요할 때마다 언박싱 과정 필요. 

2. 차지하는 메모리 양

primitive type<< reference type


결론

성능과 메모리 장점이 있는 primitive 타입을 먼저 고려한다. 만약 null을 다뤄야 하거나, 제네릭 타입이 사용되어야 한다면 reference 타입을 사용한다.

 

주의

참조 변수는 비교 연산 시 주의가 필요하다. 참조 변수는 객체 번지 값을 가지고 있기 때문에, value 비교가 의도라면 ==가 아닌 equals()를 사용해야 한다.

 

'Programming > Java' 카테고리의 다른 글

Generic Class (Basic)  (0) 2022.02.22
Collection  (0) 2022.02.11
Default Method in Interface  (0) 2021.11.22
JAVA 25(3) 어노테이션  (0) 2021.09.17
JAVA 22(2) 제네릭 2  (0) 2021.08.14
'Programming/Java' 카테고리의 다른 글
  • Generic Class (Basic)
  • Collection
  • Default Method in Interface
  • JAVA 25(3) 어노테이션
사랑우주인
사랑우주인
  • 사랑우주인
    lovelyAlien
    사랑우주인
  • 전체
    오늘
    어제
  • 글쓰기
    관리
    • 분류 전체보기 (209)
      • Programming (4)
        • Spring (28)
        • Java (46)
        • JPA (2)
        • 디자인 패턴 (5)
        • 개발&아키텍처 (0)
      • Network (14)
      • OS (19)
      • Database (1)
      • Kubernetes (0)
      • Kafka (2)
      • Algorithm (49)
        • BaekJoon (1)
        • Programmers (19)
        • Algorithm (5)
        • Socar (2)
        • LeetCode (19)
      • Interview (2)
      • Issues (2)
      • DotJoin (1)
      • Git (4)
      • 독서 (3)
      • 끄적끄적 (1)
      • 외부활동 (26)
        • 항해플러스 (2)
        • JSCODE 네트워크 (19)
        • JSCODE 자바 (5)
      • SQL (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • GitHub
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    pacific atlantic water flow
    Reorder List
    runner 기법
    wildcards
    디자인 패턴
    Generic
    @JsonProperty
    AuthenticationSuccessHandler
    OS
    minimum number of arrows to burst balloons
    운영체제
    JSCode
    Process
    Thread
    rotting oranges
    트랜잭션
    LinkedList
    fcfs
    @JsonNaming
    clone graph
    algorithm
    RR
    준영속 엔티티
    Climbing Stairs
    추상화 클래스
    lower bounded wildcards
    Oauth2
    BFS
    socar
    제네릭
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.1
사랑우주인
원시(Primitive) 타입과 참조(Reference) 타입
상단으로

티스토리툴바