Java 正在检查基元数据类型是否为null
我有Java 正在检查基元数据类型是否为null,java,Java,我有double类型的原始变量名义: 私人双重概念; 现在我必须做一个null检查,如果它是null,则抛出一个Exception: if(item.getonnectional()==null){ 抛出新异常(“Rfgygf”); } 但这不是正确的方法,因为基元类型不能为null。请解释如何在Java中对概念性执行正确的null检查 有没有办法用withdouble实现这一点,或者我需要将其转换为double?当您说 private double notional; 它不是null,而
double
类型的原始变量名义
:
私人双重概念;
现在我必须做一个null
检查,如果它是null
,则抛出一个Exception
:
if(item.getonnectional()==null){
抛出新异常(“Rfgygf”);
}
但这不是正确的方法,因为基元类型不能为null
。请解释如何在Java中对概念性执行正确的null
检查
有没有办法用withdouble
实现这一点,或者我需要将其转换为double
?当您说
private double notional;
它不是null
,而是0.0d
。基本值不能为null
说(部分)
基元类型的变量始终保持该基元类型的基元值
并且null
不是原始值。解释可以在上面找到,上面写着(部分)
对于类型double
,默认值为正零,即0.0d
基元类型不能有空值。只有引用类型可以有空值。第一次声明double时,存储在其中的值是0。
基本上,double类型的对象将始终存储一个值。如果不指定该值,则该值将为0。如其他答案所示,基本数据类型不能为null
我建议您将可选的类作为使用null表示无值的替代方法。Java 8包括可选
,guava库中也有类似的版本。诸如double
和int
等原始数据类型不能为空。它就像int
不能是1.1
这意味着,您不需要担心原始数据类型中的空值!它们是从不null,因此不会抛出NullPointerException
s。我想你产生这种困惑的原因是你认为一个没有值的变量必须是空的。但这是错误的。考虑这个类:
public class MyClass { int i; }
现在创建类的一个对象:
MyClass obj = new MyClass();
现在您可以打印obj.i
。会是什么?它不是空的,它是0
所有基本数据类型都有一个默认值。例如,int
的默认值是0,double
的默认值是0.0
,这解释了为什么上面的obj.i
是0。char
的默认值是什么?这是“\0”
请记住,基本数据类型不能为null
。从不基元类型不能为空@HFKJFLHFJGDHDKD您可以设置一个“per say”null
值,这样当它是一个特定值时,您就可以知道它的null
。。。。像大多数常用的-1
一样,但这并不意味着它只是空的saying@YeldarKurmangaliyev是的,但是现在有什么办法克服这个问题吗?所以,你有一个类型为double
的字段。现在,您想检查它是否为null,但您知道它不能为null。这根本没有道理。你为什么要这样做?你说的“如果它是空的”是什么意思?