在Java中进行null
或空char
检查时,我有疑问。这两者是否必须以任何方式进行检查。
例如,在数据库中,Char
的变量长度为1。它允许null
。因此,如果您有空字符,这是否意味着null
?还是我们必须像这样检查:
if(someObject.getSomeCharValue()=='' && someObject.getSomeCharValue()==null) {
//true
}
else{
//dont compile
}
char没有值为''
。在char中,null character(或空字符)是\0
或\u0000
。你不能使用''
或null
进行检查。
例如,如果你像这样声明一个char:
char c = '';//compilation error here
char c = null;//compilation error here
因此,如果您想检查一个字符是否为空,则需要使用以下代码:
char c = '\0';
if (c == '\0') System.out.print("char is null");//if(c == '\u0000') also can be possible
else System.out.print("char is not null");
'\0'
和'\u0000'
是相等的,所以if (c == '\0' || c == '\u0000')
并没有太多意义。 - undefinedif(someObject.getSomeCharValue()=='' && someObject.getSomeCharValue()==null)
两者 someObject.getSomeCharValue()==''
和 someObject.getSomeCharValue()==null
都是编译错误。
如果数据库中没有值,那意味着它是 null 而不是空字符。
在 Java 中不存在空字符(''
),但存在空字符串(""
)。
someCharValue
变量? - undefined空字符不是null。它们并不仅仅保存任何值。
是的。你应该检查列是否允许为空。此外,由于你首先检查空字符然后再检查null,所以你的代码可能会导致NullPointerException
。最好使用以下方法:
if(someObject.getSomeCharValue()==null || someObject.getSomeCharValue()=='' )
getSomeCharValue()
返回的是char
还是Character
?char
类型不能为null
。而Character
作为一个封装对象可以为null
。此外,char
的默认值是\u0000
。 - undefinedchar
不能为null
,因为它是原始类型。在Java中,也不存在空字符''
这样的概念。但即使前面的说法是错误的,你可能会得到null
或''
,那么字符也不能同时为null
和''
,所以你的条件没有意义。 - undefinedsomeObject.getSomeCharValue()==''
,因为在Java中不存在''
。如果someObject.getSomeCharValue()==null
部分可以编译通过,那意味着getSomeCharValue
的结果是包装类型Character
,而不是基本类型char
(因为基本类型不能为null
,所以在这里使用==null
会导致编译错误)。在这种情况下,你可以像现在这样检查是否为null
,或者检查默认的char
值,即'\u0000'
,也可以写作'\0'
或简单地写作0
(char
也是数值类型)。在这种情况下,你还应该记得使用逻辑运算符OR,而不是AND。 - undefined