我需要检查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");
}
}
答案 0 :(得分:3)
让我们从等式中取出数组 - 数组实际上只是变量的集合。让我们考虑一个变量。假设我们有这样的方法:
public boolean isEmpty(char c)
那会怎么做? c
的值不能为null
,因为char
是基本类型。它可能是U + 0000(又名'\u0000'
或'\0'
作为Java中的字符文字),这是char
的默认值(对于数组元素和字段)但它不同于空引用。
如果你想要一个类似于char
但是引用类型的类型,你应该考虑使用Character
- char
的包装类型就像Integer
一样int
。或者,如果你知道你从不使用U + 0000作为有效值,你可以坚持下去。
但是,更好的选择通常是设计代码,这样就不会需要“空或非空”的概念。我们不知道你想在这里实现什么,但至少考虑通常是件好事。对于数组,替代方法通常是使用ArrayList<E>
- 但是当然Java中没有ArrayList<char>
,因为Java泛型不允许使用基本类型参数:(
答案 1 :(得分:1)
基本数组的元素不能为空。如果您没有自己初始化它,它将始终具有默认值。 char的默认值为0.
答案 2 :(得分:0)
使用Character
类代替原始char
。
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");
}
}
答案 3 :(得分:0)
您不能使用null
,因为char
是原始类型。 null
仅适用于对象。使用\0
,因为它是null的原始版本。
答案 4 :(得分:0)
原始字符的默认值为0.您可以使用0进行检查 char c [] = new char [3]; c [0] ='d';
for(int i = 0; i < c.length; i++){
if(c[i] == 0){
System.out.println(i + " is empty");
}
}
偶数,char = 0也是一个字符
答案 5 :(得分:0)
您的代码是否正在编译? 如果(c [i] == null)
,您应该在此代码行中看到错误消息从错误消息中,编译器清楚地表明&#34;运算符==未定义参数类型char,null&#34;。
这应该足以使原始数组的元素(在这种情况下为字符数组)不能为空。