블로그 이름

[JAVA] int, Integer 차이, Wrapper class 본문

개발/Java

[JAVA] int, Integer 차이, Wrapper class

Hide 2024. 9. 5. 19:49

기본타입

byte, short, int, long, float, double, char, boolean

 

wrapper class

Byte, Short, Integer, Long, Float, Double, Character, Boolean

 

 

int

- 산술연산이 가능하고 null로 초기화할 수 없다.

 

Integer

- 산술연산이 불가능하다. Unboxing 해야한다. (JDK 1.5 이후 AutounBoxing 자동으로 해주기 때문에 사용 가능)

- null 값 처리 가능

 

 

String 값을 int로 변환할때,

valueOf() : Integer 클래스 리턴 (산술연산 불가능)

parseInt() : int 리턴 (산술연산 가능)

 

int와 int끼리의 연산 : 비교 가능

int와 Integer 끼리의 연산 : Integer의 값으로 비교하므로 비교 가능

Integer와 Integer 끼리의 연산 : 값이 아닌 주소값으로 비교하므로 비교 불가능

 

int는 기본 타입

Integer는 참조 타입

Integer는 참조 타입이라 실제 객체가 아닌 객체의 주소를 저장하고 있고,

 

Integer.valueOf() 메소드는 -128~127 사이의 int형 값을 넘겨줄때 새 객체를 생성하지 않고 IntegerCache 객체를 사용하기 때문에 -128~127까지는 주소값이 같아 비교 시 true가 된다

 

때문에, Integer끼리 비교 시 equals를 사용해야한다.

 

혹은 Integer.intValue() 사용해서 값 꺼내서 비교하면 된다.