(i<=j && j<=i && i!=j) 연산했을때 왜 true가 리턴이 되는거죠?

조회수 2079회
public class TestProgram {
    public static void main(String[] args){
        Integer i = new Integer(0);
        Integer j = new Integer(0);

        while(i<=j && j<=i && i!=j){
            System.out.println(i);
        }
    }
}

이런 코드가 있는데요. 저 코드에서 제 생각에는 while안의 println구문이 실행안될줄 알았는데 무한루프에 빠져요. 저게 왜 true가 되는거죠?

1 답변

  • 좋아요

    0

    싫어요
    채택 취소하기

    i<=j는 auto unboxing으로 값의 비교연산이 이루어져 0<=0 참이므로 true를 리턴합니다. j<=i도 마찬가지의 이유로 true를 리턴합니다.

    객체에서 ==나 !=의 연산은 두 객체가 서로 같은 객체를 레퍼런스하는지를 비교하는 연산입니다. i!=j에서 i와 j는 서로 다른 객체를 생성했으므로 참이됩니다. 그래서 위의 연산은 참이되고 계속 true를 리턴해서 무한루프에 빠지게 됩니다.

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)