在Java中,null和空字符是相等的。

3

在Java中进行null或空char检查时,我有疑问。这两者是否必须以任何方式进行检查。

例如,在数据库中,Char的变量长度为1。它允许null。因此,如果您有空字符,这是否意味着null?还是我们必须像这样检查:

if(someObject.getSomeCharValue()=='' && someObject.getSomeCharValue()==null) {
    //true
}
else{
    //dont compile
}

6
getSomeCharValue()返回的是char还是Characterchar类型不能为null。而Character作为一个封装对象可以为null。此外,char的默认值是\u0000 - undefined
@KevinCruijssen char是原始数据类型。 - undefined
char原始类型既不能为null,也不能为空。我自己尝试过,它无法编译通过。 - undefined
2
char 不能为 null,因为它是原始类型。在Java中,也不存在空字符 '' 这样的概念。但即使前面的说法是错误的,你可能会得到 null'',那么字符也不能同时为 null'',所以你的条件没有意义。 - undefined
2
你的代码无法编译someObject.getSomeCharValue()=='',因为在Java中不存在''。如果someObject.getSomeCharValue()==null部分可以编译通过,那意味着getSomeCharValue的结果是包装类型Character,而不是基本类型char(因为基本类型不能为null,所以在这里使用==null会导致编译错误)。在这种情况下,你可以像现在这样检查是否为null,或者检查默认的char值,即'\u0000',也可以写作'\0'或简单地写作0char也是数值类型)。在这种情况下,你还应该记得使用逻辑运算符OR,而不是AND。 - undefined
显示剩余5条评论
4个回答

3

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')并没有太多意义。 - undefined

0
if(someObject.getSomeCharValue()=='' && someObject.getSomeCharValue()==null)

两者 someObject.getSomeCharValue()==''someObject.getSomeCharValue()==null 都是编译错误。

如果数据库中没有值,那意味着它是 null 而不是空字符。

在 Java 中不存在空字符(''),但存在空字符串("")。


这个回答解决了楼主的问题吗? - undefined
那么如何处理空值? - undefined
@BelieveToLive,如果数据库中没有该值,你会将什么值传递给someCharValue变量? - undefined
@NamanGala 如果我直接从表中获取值并赋给someCharValue变量,会怎么样? - undefined
1
@BelieveToLive,你能sysout这个值并检查它打印的内容吗? - undefined
从数据库中获取的只有字符串,即使它的大小为1,也不会是字符。所以在获取字符之前,你可以对该字符串进行空值检查。但是我们无法对字符进行空值检查。 - undefined

0

空字符

//Empty character literal does not exist in Java.
char c = ''; //does not compile

Java中的空值字面量

空类型有一个值,即空引用,用ASCII字符表示的空字面量null。

与之不同的是

空字符

空字符(也称为空终止符)是一个控制字符,其值为零。

如今,在C语言及其衍生语言以及许多数据格式中,该字符具有更多的意义,它被用作保留字符,用于表示字符串的结束,通常称为空终止字符串。

关于Java中的空值的优秀文章,请参考此链接


-2

空字符不是null。它们并不仅仅保存任何值。

是的。你应该检查列是否允许为空。此外,由于你首先检查空字符然后再检查null,所以你的代码可能会导致NullPointerException。最好使用以下方法:

if(someObject.getSomeCharValue()==null || someObject.getSomeCharValue()=='' )

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接