Java 字符串[]是否由null初始化?

Java 字符串[]是否由null初始化?,java,Java,嗨,我遇到了这个问题,当我初始化字符串[]时,在我做任何事情之前,字符串[]中似乎有一个空值。如何将字符串[]初始化为完全空,即在开始时不使用null? 以下代码的输出为: 空基 空基 空基 空基 空基 publicstaticvoidmain(字符串[]args){ 字符串[]inputArr=新字符串[5]; for(int i=0;i

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


空基
空基
空基
空基
空基

publicstaticvoidmain(字符串[]args){
字符串[]inputArr=新字符串[5];
for(int i=0;i

}

数组中的null不是字符串
“null”
,而是值
null
。如果要使用空字符串对其进行初始化,请执行以下操作:

for (int i = 0; i < inputArr.length; i++) {
    inputArr[i] = "";
}
for(int i=0;i
空引用大约与字符串数组元素一样空。请注意,对空字符串的引用和空引用之间有很大的区别。只需将代码更改为使用简单赋值而不是+=

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

for (int i = 0; i< inputArr.length; i++){
    inputArr[i] = emptyForNull(inputArr[i]) + "ABC";
}
for(int i=0;i
或者(是的,有很多可用选项):

公共静态字符串null(字符串x,字符串y){
返回x==null&&y==null?”
:x==null?y
:y==null?x
:x+y;
}
...
for(int i=0;i
更改:

inputArr[i] += "ABC";
致:

或者(如Jon Skeet所述),您可以使用条件语句初始化或压缩字符串:

inputArr[i] = inputArr[i] == null ? "ABC" : inputArr[i] + "ABC";

其他人对数组和赋值运算符的“空”给出了很好的回答。让我添加另一种初始化数组的方法:

String[] inputArr = new String[5];
java.util.Arrays.fill(inputArr, "ABC");

鉴于问题中的代码,这是不必要的。Esmond将在数组中的字符串后面添加他应该分配给它的位置。问题是“我如何将字符串[]初始化为完全空”…@Thomas我同意@Matti的说法这可能只是一个坏例子。我认为OP中“完全空”的意思是一组空字符串,这就是Matti在回答中强调的。但是的,否则就没必要了。圣母啊……我想斯凯特博特已经超速了-谢谢!连接的第二部分是我要找的!
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");
}
inputArr[i] += "ABC";
inputArr[i] = "ABC";
inputArr[i] = inputArr[i] == null ? "ABC" : inputArr[i] + "ABC";
String[] inputArr = new String[5];
java.util.Arrays.fill(inputArr, "ABC");