[JAVA] Primitive Type 과 Wrapper Class

2021. 8. 15. 22:50·스터디/JAVA
728x90

💡기본형과 참조형

JAVA의 변수는 기본적으로 기본형(Primitive Type)과 참조형(Reference Type)으로 나눌 수 있다.

기본형으로는 short, int, long, float, double, byte, char, boolean 으로 8가지가 있다.

 

1. 기본형(Primitive Type)

- 모두 첫 글자가 소문자

- 산술 연산이 가능하다.

- Null로 초기화 할 수 없다.

 

2. 참조형(Wrapper Class)

- 모두 첫 글자가 대문자

- 산술 연산 불가능

- Null 사용이 가능하다.

- DB와 연결시 DTO 객체에 Null이 필요한 경우 사용할 수 있다.

 

primitive type과 wrapper class

기본형은 변수의 값을 그대로 저장한다.

참조형은 객체의 레퍼런스를 저장한다.

참조형에는 객체가 할당되어야하는데 기본형과 달리 그 사이즈가 유동적이라서 Heap 영역에 별도 메모리공간을 차지하고 그곳에 할당한 뒤 변수에는 해당 Heap 영역의 주소값을 가리키게 된다.

 

💡그렇다면 메모리를 더 차지하는 Wrapper Class는 언제 사용할까?

기본형이 때때로 객체로 취급해야할 때가있는데 이때 Wrapper Class를 사용한다.

 

1. 매개변수로 객체가 요구 될때.

2. 기본형 값이 아닌 객체로 저장해야 할 때.

3. 객체간의 비교가 필요할 때

 

위와 같은 상황일 때 Wrapper Class를 사용한다. 

 

문자를 숫자로 바꿀 경우 아래와 같이 사용한다.

int i = Integer.parseInt("100");

Integer i = Integer.valueOf("100")

 

첫번째의 경우는 문자열 -> 기본형

두번째의 경우는 문자열 -> Wrapper class 로 변환하는 경우이다.

 

💡Boxing 과 UnBoxing

1. Boxing

Primitive 자료형 -> Wrapper 클래스

기본형을 래퍼 클래스로 변환한다.

int num= 30;

Integer wrapper_num = new Integer(num);

 

2. Unboxing

Wrapper 클래스 -> Primitive 자료형

래퍼클래스를 기본형으로 변환한다.

Integer wrapper_num = new Integer(30);
int num= wrapper_num.intValue();

여기서!!!!

Integer obj = new Integer(30);가 아니라

Integer obj =30;로 해도 30 정수가 자동으로 박스에 담긴다.

어떻게 자동으로 저장이될까???!!!!

 

💡AutoBoxing 과 AutoUnBoxing

이 부분은 JDK 1.5에서 부터 오토박싱과 오토언박싱이 지원되기 때문이다.

오토박싱과 언박싱 덕분에 기본형 <-> Wrapper Class를 자유롭게 오갈수 있게 되었다.

 

1. AutoBoxing

int num = 30;
Integer obj = num;

Integer object를 생성 후 num을 n에 대입할 수 있었지만 AutoBoxing으로 인해 자동으로 객체에 값을 대입할 수 있다.

 

2. AutoUnBoxing

Integer obj = 30;
int n = obj;

Interger의 값을 int로 가져오기 위해서는 int n = obj.valueOf( ); 으로 가져왔어야했지만 int 자료형에 바로 대입할 수 있다.

 

*주의 : AutoBoxing 과 AutoUnBoxing은 기본형과 상응하는 wrapper class 사이에서만 일어난다.

int <-> double (X)  , int <-> Integer (O)

 


참고:

https://jusungpark.tistory.com/17

 

래퍼 클래스(wrapper class)

자바는 기본형(primitive type), 참조형(reference type) 으로 나뉘는 것은 모두가 아는 사실. 자바를 공부했다 해도 wrapper class가 뭔지 모르는 사람이 은근히?! 있음.. 그래서 오늘은 참조형(reference typ..

jusungpark.tistory.com

https://wakestand.tistory.com/184

 

자바 Primitive Type, Wrapper Class 사용이유

자바에서는 원시 타입(Primitive Type), 래퍼 클래스(Wrapper Class)라는 말이 있는데 래퍼 클래스는 원시 타입을 객체화한 것으로 자바 객체화(인스턴스화) 알아보기 위 스크린샷을 보면 ObjectTest 클래스

wakestand.tistory.com

parseInt 와 intValue 차이 : https://java119.tistory.com/30

728x90

'스터디 > JAVA' 카테고리의 다른 글

[JAVA] CollectionUtils.isEmpty() 사용법 및 예시  (0) 2023.02.12
[JAVA] StringUtils.isBlank()와 StringUtils.isEmpty() 차이  (0) 2023.02.11
[JAVA] 자바 예외 처리 (Exception)  (0) 2021.08.20
[JAVA] 객체 지향 설계 SOLID  (0) 2021.07.02
[JAVA] 자바 오류, 에러 (Error) 종류  (0) 2021.05.30
'스터디/JAVA' 카테고리의 다른 글
  • [JAVA] StringUtils.isBlank()와 StringUtils.isEmpty() 차이
  • [JAVA] 자바 예외 처리 (Exception)
  • [JAVA] 객체 지향 설계 SOLID
  • [JAVA] 자바 오류, 에러 (Error) 종류
zoodi
zoodi
IT/개발 관련 지식을 기록하는 블로그입니다.
  • zoodi
    오늘의 기록
    zoodi
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 후기
        • 컨퍼런스
        • 일상리뷰
      • 금융경제
        • 뉴스
        • 금융IT용어
        • 경제 및 부동산
      • 코딩 테스트
      • 스터디
        • JAVA
        • Kotlin
        • Spring
        • React, Nextjs
        • 인공지능 AI
        • Cloud & k8s
        • Kafka
        • Database
        • Network
        • Algorithm
        • Hadoop
        • LINUX
        • R Programming
        • 기타 (소공, 보안)
      • 도서
      • 기타
  • 블로그 메뉴

    • 홈
    • 스터디
    • 금융경제
    • 후기
    • 기타
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Spring
    코테공부
    이분탐색
    C++
    코딩
    kafka
    자료구조
    금융용어
    코딩테스트
    네트워크
    LeetCode
    codility
    쿠버네티스
    springboot
    java
    Kotlin
    스프링부트
    프로그래머스
    카카오코테
    스프링
    MySQL
    db
    알고리즘
    리트코드
    자바
    Python
    코테
    코딜리티
    CodingTest
    pythoncodingtest
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
zoodi
[JAVA] Primitive Type 과 Wrapper Class
상단으로

티스토리툴바