正在检查基元数据类型是否为null



我有double类型的基元变量notional

private double notional;

现在我必须进行null检查,如果是null:,则抛出Exception

if (item.getNotional() == null) {
    throw new Exception("Rfgygf");
}

但这不是正确的方法,因为基元类型不能是null。请解释如何在Java中对notional执行正确的null检查。

有没有办法用double来实现这一点,或者我需要将其转换为Double

基本数据类型(如doubleint)不能为null。这就像int不能是1.1

这意味着,您不需要担心原始数据类型中的无效性!它们是nevernull,因此不会抛出NullPointerExceptions。我想您出现这种困惑的原因是您认为没有值的变量必须为null。但这是错误的。考虑这个类别:

public class MyClass { int i; }

现在您创建了一个类的对象:

MyClass obj = new MyClass();

现在打印obj.i。会是什么?它不是空的,它是0

所有基元数据类型都有一个默认值。例如,int的默认值为0,double的默认值是0.0,这解释了为什么上述obj.i为0。char的默认值是什么?是''

请记住,基元数据类型不能是null

从不

从不

从不

基元类型不能有null值。只有引用类型可以具有null值。当您第一次声明double时,存储在里面的值是0。基本上,double类型的对象将始终存储一个值。如果您没有指定该值是什么,它将是一个0。

当你说时

private double notional;

它不是null,而是0.0d。基元值不能为null

JLS-4.12.1原始类型的变量表示(部分)

基元类型的变量始终包含该基元类型精确的基元值。

并且CCD_ 28不是基元值。解释见JLS-4.12.5。变量的初始值,表示(部分)

对于类型double,默认值为正零,即0.0d

正如其他答案所指出的,基元数据类型不能为null。

我建议您将Optional类视为使用null表示无值的替代方法。Java 8包含Optional,番石榴库中也有类似的版本。

相关内容

最新更新