2011-08-02 3 views
0

가능한 중복 :
Wrapper class and == operator숫자 홍보 및 평등?

나는 내 친구의 퍼즐이있다. 여기 있습니다 :

public class Test{ 
    public static void main(String[] args){ 
     Integer i = 1000; //10 
     Integer y = 1000; //10  
     System.out.println(i == y); 
    } 
} 

결과는 거짓입니다. 맞습니다. 그러나 i, y 값을 10으로 대체하면 결과는 TRUE입니다.

내가 읽은 바로는 연산자 ==가 참조 변수에 적용될 때 동일한 객체를 참조하는지 테스트합니다. 왜 그런 결과가 나는지 모르겠지만 수치 승진의 문제를 짐작할 수 있습니다. 정말 도움이 필요해. 감사합니다.

답변

2

숫자 리터럴 인 10 및 1000은 int 유형이므로 승격 된 것은 없습니다.

그러나 대부분의 값이 작거나 작은 값이 자주 사용되기 때문에 stringpool과 비슷한 작은 Integer-Objects에 대한 값 풀이 있습니다. 하지만 풀의 크기를 제한하기 위해 -128에서 127 사이의 값만 포함합니다.

객체의 경우 항상 equals와 비교하고 ==를 갖는 기본 유형 만 비교하십시오.

+0

감사합니다. 나는이 사건을 기억해. –