2013-04-30 4 views
2

나는 방금 .equals()==, 자바의 pass-by-copy 대 pass-by-reference 등등에 대해 머리를 감싸기 시작했다. 그리고 자바가 무한대로 돌아가는 시나리오가 있을지 궁금하다. :(i! = i)가 true로 평가되는 시나리오가 있습니까?

while (i != i) { 
    // infinite loop 
} 

String 객체, Array 객체 등에 관한 아이디어가 있지만 작동하려면 아무 것도 얻을 수 없습니다. 감사.

+6

'i'가 부동 소수점 NaN 인 경우. –

+0

그것은'pass by value' 만 있습니다. java에있는'pass by reference' 또는'pass by reference'는 없습니다. – Anirudha

+0

참조 http://stackoverflow.com/questions/4933769/c-sharp-nan-comparison-differences -between-equals-와 –

답변

7
while (Double.NaN != Double.NaN) 

나는 이것이 Java Puzzlers 책에서 "bride of looper"퍼즐 믿습니다.

참조 용 JLS 참조 :

피연산자가 NaN 인 경우 ==의 결과는 다음

부동 소수점 어떤지 검사는 IEEE 754 표준의 규칙에 따라 수행 false이지만 ! = 결과가 참입니다. 실제로 x의 값이인 경우에만 x! = x가 true가됩니다. Float.isNaN 및 Double.isNaN 메서드는 또한 값이 NaN인지 테스트하는 데 사용될 수 있습니다.

+0

아, 그럼 재미 있어요. 내 뇌에 추가 할 애매한 표준 사양의 또 다른 맛있는 가사 :) –

관련 문제