반응형
어떻게“a <= b && b <= a && a! = b”가 참일 수 있습니까?
이 질문에 이미 답변이 있습니다.
이것이 어떻게 가능한지 알아내는 코드입니다. 단서가 있지만 어떻게해야할지 모르겠습니다. 음수와 양수, 그리고 아마도 변수 수정 자에 관한 것이라고 생각합니다. 나는 초보자이며 모든 곳에서 해결책을 찾았지만 사용할 수있는 것을 찾을 수 없었습니다.
문제는 두 변수를 선언하고 초기화해야한다는 것입니다. if 조건은 참이어야합니다.
코드:
if( a <= b && b <= a && a!=b){
System.out.println("anything...");
}
시간을 내 주셔서 감사합니다.
기본 유형에서는 불가능합니다. boxed Integers로 얻을 수 있습니다.
Integer a = new Integer(1);
Integer b = new Integer(1);
<=
및 >=
(가) 동안 비교는 언 박싱 값 1을 사용합니다 !=
참조를 비교하고 서로 다른 객체이기 때문에 성공합니다.
이것도 작동합니다.
Integer a = 128, b = 128;
이것은하지 않습니다 :
Integer a = 127, b = 127;
자동 복싱 an int
은 Integer.valueOf(int)
. 이 함수는 128보다 작은 값에 대해 캐시를 사용합니다. 따라서 128을 할당하면 캐시 적중이 없습니다. Integer
각 자동 박싱 작업 으로 새 인스턴스를 만들고 a != b
(참조 비교)가 참입니다.
127의 할당에는 캐시 적중이 있으며 결과 Integer
개체는 실제로 캐시의 동일한 인스턴스입니다. 따라서 참조 비교 a != b
는 거짓입니다.
클래스 변수 또 드문 경우는 다른 스레드의 값을 변경할 수있을 수 a
와 b
의 비교가 실행된다.
참조 URL : https://stackoverflow.com/questions/19042393/how-can-abbaab-be-true
반응형
'programing' 카테고리의 다른 글
Visual Studio가없는 컴퓨터에서 원격 디버깅을 설정하는 방법 (0) | 2021.01.17 |
---|---|
Gorilla 툴킷을 사용하여 루트 URL로 정적 콘텐츠 제공 (0) | 2021.01.17 |
VSCode에서 사용자 지정 코드 조각을 추가하는 방법은 무엇입니까? (0) | 2021.01.17 |
LinearLayoutManager를 사용하여 RecyclerView에서 맨 위로 스크롤 (0) | 2021.01.17 |
액션 필터에 서비스 삽입 (0) | 2021.01.17 |