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。我不明白为什么它不起作用。
答案 0 :(得分:4)
String
是immutable。您无法更改String
对象s3
和s4
正在引用的对象。当您执行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;
此致