자바에서 Integer클래스는 어떻게 비교하죠?
조회수 11100회
음.. 예를 들어서
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때문인지 아니면 객체가 같기때문인지 잘 모르겠습니다.
1 답변
-
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))
이런식으로 하시면 됩니다.
댓글 입력