문제

새로운 변수의 비교 또는 초기화를 위해, 당신이 사용하는 이들 중 하나를 차이가 있습니까?

BigDecimal.zero가 1.5 기능이라는 것을 알고 있습니다. 따라서 문제가되지만 1.5를 사용한다고 가정합니다.

감사.

도움이 되었습니까?

해결책

BigDecimal.ZERO 미리 정의 된 상수이므로 런타임에 문자열에서 평가할 필요가 없습니다. BigDecimal("0") 할 것입니다. 더 빠르고 새로운 객체를 만드는 것이 필요하지 않습니다.

코드가 1.5 사전에서 실행되어야하는 경우 (많은 악성) 싱글 톤 패턴을 사용하여 BigDecimal.ZERO. 처음 사용되면 BigDecimal("0") 객체가 0을 만들고 후속 호출에서 해당 객체를 반환합니다. 그렇지 않으면 코드가 1.5 시스템에서 실행중인 경우 싱글 톤 객체가 반환 할 수 있습니다. BigDecimal.ZERO 런타임 페널티가 없습니다.

다른 팁

Zero를 사용하면 새 객체를 생성하거나 구문 분석이 필요하지 않습니다. 확실히가는 길.

런타임 페널티에 대해 이야기하기 전에이 코드가 중요한지 확인하십시오. 프로파일 링을 설정하고 완전한 사용 사례를 측정하십시오.

그럼에도 불구하고 선호합니다 Bigdecimal.ZERO 컴파일 시간에 확인하면 실수로 입력 할 수 있습니다. new BigDecimal("9"), 컴파일러가 허용하지만 응용 프로그램에 버그가 발생합니다.

호기심으로 BigDecimal의 생성자에게 확인했으며 "0"문자열에 대한 최적화가 없습니다. 확실히 그렇습니다. 차이가 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top