JAVA Integer, int 숫자 비교

배상규·2023년 8월 28일
0
post-thumbnail

숫자 비교 중 에러 발생

최근 프로젝트중 버그가 발생했는데 원인을 찾느라 애먹은적이 있다.
숫자 비교하다 생긴 문제였으며 생각없이 코딩하다 원인 파악하는데 시간 보내지 말라고 기록을 남겨본다

자바에서 숫자를 저장하는 3가지 방법이다

int a = 1;
Intger b = 1;
Intger c = new Integer(1);
if(a==1)  => true
if(b==1)  => true
if(c==1)  => true

a,b,c 숫자 모두 당연히 true일 것 이다.

이제 변수 끼리 비교해 보자

// int == Integer
if(a==b)  => true
// int == new Integer 
if(a==c)  => true
// Integer == Integer
if(b==c)  => false

비교 대상중 primitive type(int) 변수 존재시 연산자는 값자체를 비교하고

Wrapper class(Integer) 끼리 비교 하는 경우 연산자는 각 객체의 주소 값을 비교하게되기 때문에 false를 반환한다.

그러니 Integer와 Integer를 값을 비교하려면 equal 메소드를 활요하거나 Integer를 int로 형 변환 하여 비교하여야 한다.

if(b.equals(c))  => true

int d = b.intValue();
int e = c.intValue();

if(d==e)  =>true

결론

당연히 오류가 생기는 결과 였다..
아무런 생각이 없었다는것을 반성하며 항상 코드 짤때는 신경쓰면서 코딩하자!!

profile
기록에 성장을

0개의 댓글