嗨,我遇到了这个问题,当我初始化String []时,在我做任何事情之前,String []中似乎都为空。我如何将String []初始化为完全为空,即开始时没有null?
以下代码的输出是:

nullABC
nullABC
nullABC
nullABC
nullABC




public static void main(String[] args){
    String[] inputArr = new String[5];
    for (int i = 0; i< inputArr.length; i++){
        inputArr[i] += "ABC";
    }
    for (int i = 0; i< inputArr.length; i++){
        System.out.println(inputArr[i]);
    }
}


}

最佳答案

空引用大约与字符串数组元素可以为空。请注意,尽管对空字符串的引用与对空字符串的引用之间存在很大差异。只需将您的代码更改为使用简单赋值而不是+ =。

for (int i = 0; i< inputArr.length; i++){
    inputArr[i] = "ABC";
}


如果您需要在其他地方进行条件串联,请使用以下方法:

for (int i = 0; i< inputArr.length; i++) {
    String current = inputArr[i];
    String suffix = "ABC";
    String replacement = current == null ? suffix : current + suffix;
    inputArr[i] = replacement;
}


或者,您可以使用以下方式:

public static String emptyForNull(String x) {
    return x == null ? "" : x;
}


然后有:

for (int i = 0; i< inputArr.length; i++){
    inputArr[i] = emptyForNull(inputArr[i]) + "ABC";
}


或(是,很多可用选项):

public static String nullAwareConcat(String x, String y) {
    return x == null && y == null ? ""
        : x == null ? y
        : y == null ? x
        : x + y;
}

...

for (int i = 0; i< inputArr.length; i++){
    inputArr[i] = nullAwareConcat(inputArr[i], "ABC");
}

10-06 09:40