我有一个名为ElementInfo
public class ElementInfo {
public String name;
public String symbol;
public double mass;
}
然后我尝试创建一个ElementInfo
数组,如下所示:
ElementInfo e[] = new ElementInfo[2];
e[0].symbol = "H";
e[0].name = "Hydrogen";
e[0].mass = 1.008;
//...
别告诉我,我必须为班级的每个实例调用new
!
我可以这样做:
ElementInfo e[] = new ElementInfo[100];
for(ElementInfo element: e){
e = new ElementInfo();
}
答案 0 :(得分:3)
您必须为班级的每个元素调用new。
public class ElementInfo {
private String name;
private String symbol;
private double mass;
public String get_name() { return name; }
public String get_symbol() { return symbol; }
public double get_mass() { return mass; }
public ElementInfo(name, symbol, mass) {
this.name = name;
this.symbol = symbol;
this.mass = mass;
}
}
然后像这样创建它们:
e[0] = new ElementInfo("H", "Hydrogen", 1.008);
答案 1 :(得分:3)
别告诉我,我必须为班级的每个实例打电话给新人!
完全。
您刚刚创建了一个空数组。
答案 2 :(得分:3)
ElementInfo e[] = new ElementInfo[2];
e[0] = new ElementInfo();
e[0].symbol = 'H'; ...
答案 3 :(得分:3)
您必须为每个元素创建一个新实例,但这并不难:
ElementInfo e[] = new ElementInfo[2];
for (int i = 0; i < e.length; i++)
e[i] = new ElementInfo();
答案 4 :(得分:2)
是的,你必须这样做。
创建数组时,只需为实际对象的引用创建空间。最初值为null
。
要引用对象,请执行分配
e[0] = new ElementInfo();
或
ElementInfo a = new ElementInfo();
....
e[0] = a;
放松,打字将成为程序员的最后一个问题:-D
答案 5 :(得分:1)
通过声明一个数组,该数组类型的实例不会自动填充数组。
e[0] = new ElementInfo();
您还可以使用for循环轻松地在每个索引处实例化对象。
for (int i = 0; i < e.length; i++) {
e[i] = new ElementInfo();
}
答案 6 :(得分:1)
是。现在它是一个包含ElementInfo对象的数组,但每个索引都为空。
为什么不创建一个接受参数的构造函数。然后
ElementInfo [] elements = {new ElementInfo("H", "Hydrogen", 1.008), new ElementInfo("C", ....)};
答案 7 :(得分:0)
ElementInfo e[] = new ElementInfo[100];
for(ElementInfo element: e){
e = new ElementInfo();
}
您不能这样做,因为e
是一个数组类型变量,这意味着您无法为其指定类型为ElementInfo
的对象的引用。 e = new ElementInfo();
就是我指的。