평등을 검사하는 테스트 코드를 작성했습니다. 나는 자바 문서를 검사했고 BigInteger
은 불변이라고 말합니다. 정적 팩토리 메서드 valueOf
의 문서를 확인하면 이미 캐시 된 변경 불가능한 인스턴스가 반환됩니다. 그렇다면 캐시 된 인스턴스가있을 때 ==가 false를 반환하는 이유는 무엇입니까?BigInteger.ValueOf()는 캐시 된 객체를 반환합니까?
값 긴 지정된 의와 동일한 큰 정수를 반환
다음은
valueOf
BigInteger
에 대한 Java 문서입니다. 이 "정적 팩토리 메서드"는 자주 사용되는 BigIntegers를 다시 사용할 수 있으므로 (long) 생성자보다 우선적으로 제공됩니다.
아래 코드는 무한 루프가됩니다.
public static void main(String[] args) {
while(true) {
BigInteger a = BigInteger.valueOf(100);
BigInteger c = BigInteger.valueOf(100);
if (a == c) {
break;
}
}
입니다'== 참조 평등을위한'시험, '.equals()'값 동일성 테스트 – azurefrog
'equal()'을 사용하여 동등성을 검사합니다. – Li357
원시 타입의 경우 '=='는 값을 비교하지만 객체의 경우에는 참조를 비교합니다. – Gendarme