Java Double初始化为0.0

时间:2012-03-19 11:12:10

标签: java double

我有一个bean,我有一个字段“CustAmount”,它是双倍的,我尝试测试bean,我似乎不明白这一点:当我在我的本地机器上运行时,它在实例化时被初始化为0.0。当我在我的linux测试环境中运行相同的代码时,它仍然是null。由于检索到的数据存在差异,这意味着如果我将CustAmount作为null发送到我的后端,我会获得一些数据,但如果我将CustAmount发送为0.0,则查询将在0.0的基础上完成,并且不会向我发回任何内容。

如果代码相同,这怎么可能呢?有可能当我在java 1.5中编译新的MyBean()时,double仍然为null,在1.6中它被初始化为0.0。

我不知道这是在两个Java版本中发生的事情,但这是我最终的唯一区别。

感谢任何提示。

添加代码段:

public class MyBean {

private double custAmount;

    public void setCustAmount(double custAmount) {
        this.custAmount = custAmount;
    }
public double getCustAmount() {
        return custAmount;
    }

}

我只是做

MyBean mybean =  new MyBean();

它不是双倍而是双倍。 赛义德..

2 个答案:

答案 0 :(得分:12)

Java double字段将默认初始化为0.0。 Java Double字段将默认初始化为null。无论您使用什么版本的Java,无论您在何种环境中运行它,这两个事实都将成立。


如果您在不同的环境中看到不同的行为,那么最可能的解释是您在相应的环境中执行不同的代码(或以不同的方式调用相同的代码)。发布一些显示问题的代码可能会指出其他一些问题,但我对此表示怀疑。


根据您发布的代码,custAmountnull是不可能的。在您看到null的情况下,您必须使用该代码的不同版本,或者null必须来自其他来源。

答案 1 :(得分:0)

我有类似的问题。我认为我的Long初始化为0.但它本身没有初始化,而是来自我页面上的<p:selectOneMenu />

            <p:selectOneMenu value="#{myBean.myLongValue}">
                <f:selectItem value="#{null}" itemValue="#{null}" itemLabel="-" />
                <f:selectItems ... />
            </p:selectOneMenu>

因此,如果您没有从表单中以某种方式设置页面,请尝试检查您的页面。