如何更改字符串数组中的字符串? Java的

时间:2013-11-25 15:12:51

标签: java arrays string

public class Test {


    public static void main(String[] args) {

        String s1 = "Hey";
        String s2 = "How are you?";
        String s3 = null;
        String s4 = null;


        String[] s = {s3, s4};
        s3 = s1;
        s2 = s4;

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

我试过这个,在另一个项目中给出s3和s4在s中的值s1和s2。输出为null null。我不明白为什么它不起作用。

7 个答案:

答案 0 :(得分:4)

Java中的

Stringimmutable。您无法更改String对象s3s4正在引用的对象。当您执行s3 = s1时,您正在使局部变量s3引用与String相同的s1实例,但数组所持有的值仍然是旧值由s3引用。

您可以将String变量视为String对象的某种指针。您可以更改其中是指向的变量(它引用的是哪个实例),但您无法更改引用的对象。

您需要将新的(或现有的)String实例分配给数组:

s[0]=s1

s2 = s4语句只会使s2局部变量引用s4引用的对象(null引用)。

答案 1 :(得分:2)

您必须直接从数组中更改值:

s[0] = s1;
s[1] = s4;

答案 2 :(得分:1)

你必须小心陈述的顺序。所以改变:

String[] s = {s3, s4};
s3 = s1;
s2 = s4;

为:

s3 = s1;
s2 = s4;
String[] s = {s3, s4};

答案 3 :(得分:1)

您必须修改实际的array而不是参考。

s[0]=s1
s[1]=s2

答案 4 :(得分:0)

制作

s[0] = s1; 
s[1] = s4;

如果您是数组,则必须从数组更改值。

答案 5 :(得分:0)

s3和s4仅引用Object。 您正在更改本地引用而不是对象本身。

答案 6 :(得分:0)

嗨,我认为问题在于价值观的分配。

尝试这样的事情:

public static void main(String[] args) {
    String s1 = "Hey";
    String s2 = "How are you?";
    String s3 = null;
    String s4 = null;


    String[] s = {s3, s4};
    s[0] = s1;
    s[1] = s2;

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

您还需要更改此

s2 = s4;

此致