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


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가 되는거죠?

  • 2016년 02월 13일에 작성됨

조회수 152


1 답변


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

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

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

  • 2016년 02월 13일에 작성됨

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

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