Java 如何检查字符数组的元素是否为空?

Java 如何检查字符数组的元素是否为空?,java,arrays,char,Java,Arrays,Char,我需要检查java字符数组的元素是否为空。我尝试了以下代码,但没有成功。怎么了 char c[] = new char[3]; c[0] = 'd'; for (int i = 0; i < c.length; i++) { if(c[i] == null) { System.out.println(i + " is empty"); } } charc[]=新字符[3]; c[0]=“d”; for(int i=0;i >,但它是一个引用类型,您应该考

我需要检查java字符数组的元素是否为空。我尝试了以下代码,但没有成功。怎么了

char c[] = new char[3];
c[0] = 'd';

for (int i = 0; i < c.length; i++) {
    if(c[i] == null) {
        System.out.println(i + " is empty");
    }
}
charc[]=新字符[3];
c[0]=“d”;
for(int i=0;i
基元数组的元素不能为空。如果您没有自己初始化它,它将始终具有默认值。char的默认值为0。

基元数组的元素不能为null。如果您没有自己初始化它,它将始终具有默认值。char的默认值为0。

使用
字符
类而不是原语
字符

Character c[] = new Character[3];
c[0] = 'd';

for(int i = 0; i < c.length; i++){
    if(c[i] == null){
        System.out.println(i + " is empty");
    }
}
字符c[]=新字符[3];
c[0]=“d”;
for(int i=0;i
使用
字符
类代替原语
字符

Character c[] = new Character[3];
c[0] = 'd';

for(int i = 0; i < c.length; i++){
    if(c[i] == null){
        System.out.println(i + " is empty");
    }
}
字符c[]=新字符[3];
c[0]=“d”;
for(int i=0;i
让我们把数组从等式中去掉——实际上,数组只是变量的集合。让我们考虑一个变量。假设我们有这样一种方法:

public boolean isEmpty(char c)
那会怎么样?
c
的值不能为
null
,因为
char
是一种基本类型。它可以是U+0000(在Java中称为字符文字的
'\u0000'
'\0'
),这是
char
(用于数组元素和字段)的默认值,但与空引用不同

如果您想要一个类型,如<代码> char ,但它是一个引用类型,您应该考虑使用<代码> char >的包装类型,就像<代码>整型< /代码>是<代码> int <代码>。或者,如果您知道永远不会使用U+0000作为有效值,您可以坚持使用它


然而,更好的选择通常是设计代码,这样就不需要“空或不空”的概念。我们不知道你在这里想要达到什么目标,但至少考虑一下是件好事。对于数组,另一种选择通常是使用
ArrayList
——但在Java中当然不能有
ArrayList
,因为Java泛型不允许基元类型参数:(

让我们从方程中提取数组),数组只是变量的集合,真的。让我们考虑一个变量。假设我们有这样的方法:

public boolean isEmpty(char c)
那会怎样呢?
c
的值不能是
null
,因为
char
是一个基本类型。它可以是U+0000(在Java中称为
'\u0000'
'\0'
作为字符文本),这是
char
的默认值(对于数组元素和字段)但它与空引用不同

如果您想要一个类型,如<代码> char < /C> >,但它是一个引用类型,您应该考虑使用< <代码> char >的包装类型,就像<代码>整数< /代码>是<代码> int >代码>。或者,如果您知道您永远不会使用U+ 0000作为一个有效的值,您可以坚持使用。


然而,更好的选择通常是设计代码,这样您就不需要“空或不空”的概念我们不知道在这里你想达到什么,但是至少通常是一件好事。对于数组,替代的是使用一个<代码> ARARYLIST//C>——但是,java java语言中不允许有原始类型参数,当然,你不能有<代码> > ARARYLISTAB/CODE >:(

不能使用
null
,因为
char
是一种基本类型。
null
仅适用于对象。使用
\0
因为它是null的基本版本。

不能使用
null
因为
char
是基本类型。
null
只适用于对象。使用
\0
因为它是基本类型null的版本。

原语字符的默认值为0。您可以使用0进行检查 字符c[]=新字符[3]; c[0]=“d”

for(int i = 0; i < c.length; i++){
    if(c[i] == 0){
        System.out.println(i + " is empty");
    }
}
for(int i=0;i

甚至,char=0也是一个字符

原语char的默认值是0。您可以用0检查它 字符c[]=新字符[3]; c[0]=“d”

for(int i = 0; i < c.length; i++){
    if(c[i] == 0){
        System.out.println(i + " is empty");
    }
}
for(int i=0;i
甚至,char=0也是一个字符

您的代码正在编译吗? 如果(c[i]==null),您应该会在该代码行看到一条错误消息

从错误消息中,编译器清楚地显示“对于参数类型char,null,运算符==未定义”

基本数组(本例中为字符数组)的元素不能为null,这就足够了。

您的代码正在编译吗? 如果(c[i]==null),您应该会在该代码行看到一条错误消息

从错误消息中,编译器清楚地显示“对于参数类型char,null,运算符==未定义”


原语数组(本例中为字符数组)的元素不能为null,这就足够了。

那么我应该怎么做?@xXLemonProgrammerXx这取决于默认值0是否可以在代码中成为有效值。如果不能,您只需检查
If(c[I]>0)
。如果
0
是一个有效值,您可以使用装箱版本-Character-可以为空。或者您可以使用int数组而不是char数组,并将数组的元素初始化为-1。那么我应该怎么做?@xXLemonProgrammerXx这取决于默认值0是否可以是代码中的有效值。如果不能,请你可以简单地检查
if(c[i]>0)
。如果
0
是一个有效值,你可以使用装箱版本-Character-可以为空。或者你可以使用int数组而不是char数组,并初始化元素