본문 바로가기
Java

BigDecimal의 compareTo 메서드 파헤치기

by sangyunpark99 2024. 7. 17.

계좌의 잔고를 BigDecimal이라는 자료형을 사용하고 있다.

BigDecimal 자료형을 가진 값들을 비교하기위해 BigDeciamal class에 내장되어 있는 compareTo 메서드를 사용하고 있다.

 

정확한 동작 원리를 파헤쳐보자

BigDecimal은 다음과 같이 Comparable Interface를 구현하고 있다.

 

 

Comparable interface에는 compareTo라는 인터페이스 메소드가 존재한다.

BigDecimal에서 compareTo라는 인터페이스 메소드를 구현하는 구조이다.

 

@Override를 해서 compareTo 메서드를 구현해주고 있다.

 

코드를 좀 살펴보자

intCompat은 자기 자신을 가리키고, val은 비교하고자 하는 값을 가리킨다.

 

비교에 따라 다른 return 값을 부여해주는 코드는 다음과 같다.

return xs != ys ? ((xs > ys) ? 1 : -1) : 0;

 

3항 연산자를 해석해보자

xs(자기 자신)과 ys(인수의 값)이 같은 경우엔 0을 return

같지 않으면서 xs(자기 자신)이 ys(인수의 값)보다 크면 1을 return

같지 않으면서 xs(자기 자신)이 ys(인수의 값)보다 작으면 -1을 return

 

🎯 정리

비교하는 값과 같은 경우 : 0
비교하는 값보다 작은 경우 : -1
비교하는 값보다 큰 경우 : 1