[JAVA] int 와 Integer의 차이

     

    1) int는 무엇인가? (primitive type)

    int는 변수의 타입(data type)이다.

    변수(variable)는 '값을 저장할 수 있는 메모리 상의 공간'을 의미 

     

    int a = 3;
    char firstName = "H";

    에서 a 나 H 는 변수(변수명)가 되는 것

    그리고 그 앞에 적힌 int 와 char가 변수의 형을 지정해주고 있는 것이,
    변수의 타입( = data type = 자료형 ) 이라 함

    즉, 자료형은 'data의 type에 따라 값이 저장될 공간의 크기와 저장 형식을 정의한 것' 이라고 볼 수 있음

    이러한 자료형은 기본형(primitive type)과 참조형(referece type)으로 나뉘는데,
    int 는 이 중 기본형에 속함

    기본형에는 다음과 같은 종류가 있음

     

     

    2) 그렇다면 Integer는 무엇인가? (wrapper class)

    맨날 쓰던 Integer인데.... 어디에 썻더라..? 하고 생각해보면 주로

    ArrayList<Integer> intList = new ArrayList<Integer>();
    	intList.add(1);
    	intList.add(2);
    	System.out.println(intList.get(0));
    	String stringNum = "123";
    	int intNum = Integer.parseInt(stringNum);
    	System.out.println(intNum);

    이런 경우에 많이 쓰거나 봤었기에, 'int랑 뭐 사촌... 그런거아니야?' 정도 로만 생각하곤 별 의심없이 사용하곤 했었다..

    **
    다시 본론으로 가서.. Integer는 무엇인가 하면,
    1)에서 다룬 기본형을 표현해야 하는 경우가 있다.

    • 매개변수로 객체를 필요로 할 때
    • 기본형 값이 아닌 객체로 저장해야할 때
    • 객체 간 비교가 필요할 때

    이런 경우 기본형을 객체로 다루기 위해 사용하는 클래스들을 래퍼 클래스(wrapper class)라고 한다
    그리고 Integer는 int의 레퍼클레스 라고 할 수 있다.

    모든 기본형은 래퍼클래스를 생성할 수 있고, 이는 아래와 같다

     

    3) 그래서 int와 Integer는 어떻게 다른거지?

    int : 자료형(primitive type)

    • 산술 연산 가능함
    • null로 초기화 불가

    Integer : 래퍼 클래스 (Wrapper class)

    • Unboxing하지 않을 시 산술 연산 불가능함
    • null값 처리 가능

    **
    boxing : primitive type -> wrapper class 변환 ( int to Integer )
    unboxing : wrapper class -> primitive type 변환 ( Integer to int )

    으로 정리할 수 있을 것 같습니다.

     

    원문: https://velog.io/@hadoyaji/int%EC%99%80-Integer%EB%8A%94-%EB%AC%B4%EC%97%87%EC%9D%B4-%EB%8B%A4%EB%A5%B8%EA%B0%80

     

    반응형

    'Computer Science > 👩🏻‍💻 JAVA' 카테고리의 다른 글

    [java]Deep copy와 Shallow copy  (0) 2022.07.22

    댓글