자바에서 Integer클래스는 어떻게 비교하죠?


음.. 예를 들어서

Integer a = 4;
if (a < 5)

이런 거는 auto boxing을 배워서 비교연산이 된다는건 알고있는데요. Integer와 int형은 비교 연산이 잘되지만 문제는 Integer와 Integer를 연산할때에요.

Integer a = 4;
Integer b = 5;

if (a == b)

위에 코드에서 a와 b가 같은 객체였을때 연산을 하게되면 결과는 true가 나오는데 이게 auto unboxing때문인지 아니면 객체가 같기때문인지 잘 모르겠습니다.

  • 2016년 02월 13일에 작성됨

조회수 744


1 답변


좋아요
0
싫어요
채택취소하기

Integer나 Long같은 클래스에서 ==연산은 두 객체의 레퍼런스가 같은지를 비교하는 연산을 합니다.

Integer x = ...;
Integer y = ...;

System.out.println(x == y);

위와 같은 코드에서 x==y는 x와 y가 가리키고 있는 레퍼런스가 같은지를 비교하는거지 두 객체가 가진 숫자의 값을 비교하지는 않습니다. 그래서

Integer x = new Integer(10);
Integer y = new Integer(10);

System.out.println(x == y);

이런 연산을 했을때 결과는 false가 나오게 됩니다. 만약의 Integer에서 값을 비교하고 싶으시다면 equals()메소드나 intValue()메소드를 이용해서 비교를 하시면 됩니다.

if (x.intValue() == y.intValue())
if (x.equals(y))

이런식으로 하시면 됩니다.

  • 2016년 02월 13일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close