Java 数组引用
如果我创建一个变量数组:Java 数组引用,java,arrays,Java,Arrays,如果我创建一个变量数组: public String a; public String b; public String c; public String[] d = {a,b,c}; 它将包含{null,null,null} 如果我这样做: a = "5"; System.out.println(d[0]); 由于初始化d时a为null,因此输出将为null 有没有办法创建一个“引用数组”,以便在这种情况下输出为5 编辑: 情节扭曲 代码的第一部分在某个类中。第二部分位于扩展第一部分的类
public String a;
public String b;
public String c;
public String[] d = {a,b,c};
它将包含{null,null,null}
如果我这样做:
a = "5";
System.out.println(d[0]);
由于初始化d
时a
为null
,因此输出将为null
有没有办法创建一个“引用数组”,以便在这种情况下输出为5
编辑:
情节扭曲
代码的第一部分在某个类中。第二部分位于扩展第一部分的类中。您可以使用自己的可变类包装
字符串:
class MyString {
private String value;
public MyString(String value) {
this.value = value;
}
void setValue(String value) {
this.value = value;
}
@Override
public String toString() {
return value;
}
}
现在:
public MyString a=新MyString(null);
public MyString b=新MyString(null);
public MyString c=新MyString(null);
公共MyString[]d={a,b,c};
...
a、 设置值(“5”);//如何从原语中获取null
?而且,这些变量还没有初始化;代码不会编译。“它将包含{null,null,null};”;不,您的代码不会编译。输出不会为null,它将为零(0),因为原语整数初始化为零。使用对象包装器(Integer
)。好吧,我的缺点是,我试图过多地简化它。我在使用字符串…@MarkoTopolnik为什么它们需要显式初始化?它们是字段,不是局部变量。因为a.setValue(“5”)
会产生一个NPE,正如您所示,d
仍然是{null,null,null}
。
public MyString a = new MyString(null);
public MyString b = new MyString(null);
public MyString c = new MyString(null);
public MyString[] d = {a,b,c};
...
a.setValue("5"); // <--