Java Double инициализируется до 0.0 - PullRequest
1 голос
/ 19 марта 2012

У меня есть bean-компонент, у которого есть поле "CustAmount", которое является двойным, я попытался протестировать bean-компонент, и я, похоже, не понимаю этого: при запуске на локальной машине он инициализируется до 0.0 при создании экземпляра.Когда я запускаю тот же код в моей тестовой среде Linux, он остается нулевым.из-за этого существует разница в значении извлеченных данных, если я отправляю CustAmount как ноль в свой бэкэнд, я получаю некоторые данные, но если я отправляю CustAmount как 0.0, запрос выполняется на основе 0.0 и ничего мне не отправляет обратно.

Как это возможно, если код такой же, по какой-то вероятности возможно, что когда я делаю новый MyBean (), скомпилированный в Java 1.5, double остается нулевым, а в 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 ]

12 голосов
/ 19 марта 2012

Поле Java double будет по умолчанию инициализировано 0.0.Поле Java Double будет по умолчанию инициализировано null.Эти два факта будут верны независимо от того, какую версию Java вы используете, и независимо от того, в какой среде вы ее запускаете.


Если вы видите различное поведение в разных средах, то наиболее вероятным объяснением являетсячто вы выполняете РАЗНЫЙ код в соответствующих средах (или вызываете один и тот же код разными способами).Публикация некоторого кода, который обнаруживает проблему , может указать на другую проблему, но я сомневаюсь в этом.


Исходя из вашего опубликованного кода, НЕВОЗМОЖНО для custAmount быть null.В случае, когда вы видите null, вы должны ЛИБО использовать другую версию этого кода, ИЛИ null должен исходить из другого источника.

0 голосов
/ 20 декабря 2016

У меня была похожая проблема. Я думал, что мой Long инициализируется на 0. Но он был инициализирован не сам, а с <p:selectOneMenu /> на моей странице.

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

Итак, попробуйте проверить свою страницу, если вы не устанавливаете ее каким-либо образом из формы.

...