簡単なテストクラスを考えてみましょう:
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徹底的に実装を研究したいのでない限り、この方法は無視することをお勧めします。