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

조회수 1510회
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를 리턴해서 무한루프에 빠지게 됩니다.

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

Hashcode는 개발자들을 위한 무료 QnA 사이트입니다. 계정을 생성하셔야만 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 계정을 생성하셔야만 글을 작성하실 수 있습니다.