Java 如何检查字符数组的元素是否为空?
我需要检查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 >,但它是一个引用类型,您应该考
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数组,并初始化元素