[자바]/자바 문법

[Java] Integer.parseInt, Integer.valoueOf 차이

쿠릉쿠릉 쾅쾅 2021. 10. 22. 12:49
728x90

자바의 데이터타입은 크게 2가지로 나눌 수 있음

 

 

 primitive

  • byte, short, int, long 과 같이 size가 정해져 있는 값
  • 기본 자료형
  • 스택(Stack) 메모리에 존재
  • 가벼운 데이터

 

 

 object

  • Byte, Short, Integer, Long, Class 과 같이 주소값을 참조하는 형태
  • 객체화된 자료형 (boxed primitive type)
  • 변수명.getClass().getName() 으로 Object타입 확인 가능
  • 실제 데이터는 힙(Heap) 메모리에 공유하고 래퍼런스만 스택(Stack) 메모리에 존재
  • 무거운 데이터

 

 

 

int num_one = Integer.parseInt("123");

Integer number = Integer.valueOf("456");
  • 두 개의 차이점은 primitive 타입으로 리턴할 것인지, object 타입으로 리턴할 것인지 차이
  • 굳이 객체화된 자료형을 사용할 이유가 없다면 primitive 타입을 쓰는것이 공간 효율적인 측면에서 좋음
    • int 사이즈 : 4byte
    • Integer 사이즈 : 20byte

 

 

 

 

 

Integer.valueOf()

  • Wrapper Class인 Integer Object를 반환
  • Integer클래스를 반환하기 때문에 산술연산 불가능
  • unboxing(Wrapper 클래스 → primitive 자료형) 을 해주면 산술 연산 가능
  • 기본형과 달리 null 값 처리 가능하기 때문에 SQL과 연동할 경우 처리 용이 
  • Integer(객체화된 자료형) 쓰이는 용도
    • null 값으로 처리가 유용하기 때문에 SQL과 연동할 경우 즉, DB를 사용해서 쿼리문을 짜줘야하는 경우 유용
    • ArrayList 또는 List의 요소, 키, 값으로 사용할 때
      • ArrayList<int> 는 안되지만 ArrayList<Integer>로는 사용 가능

 

 

 

참고) Wrapper Class 는 primitive 데이터를 Object데이터화 시킨 Class

 

 

 

 

Integer.parseInt()

  • primitive type인 int형 반환
  • 기본 자료형인 int형 값을 반환하기 때문에 산술연산 가능
  • 기본형은 null 값을 가질 수 없음 

 

 

728x90