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

时间:2014-11-29 09:38:48

标签: 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");
    }
}

6 个答案:

答案 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;。

这应该足以使原始数组的元素(在这种情况下为字符数组)不能为空。