簡単なテストクラスを考えてみましょう:
import java.math.BigDecimal;
/**
* @author The Elite Gentleman
*
*/
public class Main {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
BigDecimal x = new BigDecimal("1");
BigDecimal y = new BigDecimal("1.00");
System.out.println(x.equals(y));
System.out.println(x.compareTo(y) == 0 ? "true": "false");
}
}
これは(意識的に)(オブジェクト参照ではない)とx
等しいと言えy
ますが、プログラムを実行すると、次の結果が表示されます。
false
true
質問:違いは何だcompareTo()
とequals()
でBigDecimal
そのcompareTo
ことが判断できるx
と等しくなるがy
?
PS:BigDecimalにはinflate()
メソッドオンequals()
メソッドがあるようです。inflate()
実際には何をしますか?
inflate()
:内部表現のみを操作し、「外部」への目に見える影響がないため、パブリックAPIの一部ではありません。そのため、BigDecimal
徹底的に実装を研究したいのでない限り、この方法は無視することをお勧めします。