0

我有一段代码:

public class Main {
    static String strings[];

    public static void main(String[] args) {
        strings = new String[10];
        for (String s : strings) {
            s= new String("test");
        }

        for (String s : strings) {
            System.out.println(s);
        }
    }

}

为什么所有的字符串仍然包含 null 而不是“test”?

4

4 回答 4

6

您增强的 for 语句(for-each 循环)相当于:

T[] a = strings;
for (int i = 0; i < a.length; i++) {
    String s = a[i];
    s = new String("test");
}

所以你的问题与这种情况类似:

String a = null;
String b = a;
b = new String("test");
System.out.println(a); // null
于 2013-05-19T11:18:11.340 回答
1
public class Main {
    static String strings[];

    public static void main(String[] args) {
        strings = new String[10];
        for (int i = 0; i < strings.length; ++i) {
            strings[i] = new String("test");
        }

        for (String s : strings) {
            System.out.println(s);
        }
    }

}
于 2013-05-19T11:18:42.357 回答
1

要打印“测试”,试试这个:

公共类 Main { 静态字符串字符串 [];

public static void main(String[] args) {
    strings = new String[10];
    for (int i=0; i<strings.length(); i++) {       
        strings[i]= new String("test");
    }

    for (String s : strings) {
        System.out.println(s);
    }
}

}

于 2013-05-19T11:20:58.237 回答
-1

禁止在 For-each 循环中对迭代数组进行赋值。

于 2013-05-19T11:27:30.783 回答