相关疑难解决方法(0)

BigDecimal等于()与compareTo()

考虑简单的测试类:

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");
    }

}
Run Code Online (Sandbox Code Playgroud)

你可以(有意识地)说它x等于y(不是对象引用),但是当你运行程序时,以下结果显示:

false
true
Run Code Online (Sandbox Code Playgroud)

问:什么是之间的区别compareTo(),并equals()BigDecimalcompareTo可以确定x等于y

PS:我看到BigDecimal在inflate()方法上有一个equals()方法.inflate()实际上做了什么?

java equals bigdecimal compareto

141
推荐指数
1
解决办法
11万
查看次数

何时使用valueChangeListener或f:ajax监听器?

以下两段代码之间有什么区别 - 关于listener放置?

<h:selectOneMenu ...>
    <f:selectItems ... />
    <f:ajax listener="#{bean.listener}" />
</h:selectOneMenu>
Run Code Online (Sandbox Code Playgroud)

<h:selectOneMenu ... valueChangeListener="#{bean.listener}">
    <f:selectItems ... />
</h:selectOneMenu>
Run Code Online (Sandbox Code Playgroud)

ajax jsf listener valuechangelistener jsf-2

83
推荐指数
2
解决办法
9万
查看次数

为什么指定BigDecimal.equals分别比较值和比例?

这不是关于如何比较两个BigDecimal对象的问题 - 我知道你可以使用compareTo而不是equals这样做,因为equals记录为:

与compareTo不同,此方法仅考虑两个BigDecimal对象的值和比例相等(因此通过此方法比较时2.0不等于2.00).

问题是:为什么equals以这种看似违反直觉的方式指定了?也就是说,为什么能够区分2.0和2.00 很重要

似乎必须有这样的理由,因为Comparable指定compareTo方法的文档指出:

强烈建议(尽管不要求)自然排序与equals一致

我想必须有一个很好的理由忽略这个建议.

java bigdecimal

33
推荐指数
5
解决办法
1万
查看次数