我得到NullPointerException
。这就是全部,任何人都可以找出原因吗?
class one{
String name;
}
class oneTestDrive{
public static void main(String[] args){
one[] obj = new one[2];
obj[0].name = "IBM";
obj[1].name = "AGM";
System.out.println(obj[0].name);
System.out.println(obj[1].name);
}
}
答案 0 :(得分:6)
one[] obj = new one[2];
这为两个one
对象创造了空间,但实际上并没有创建它们!
这样做:
one[] obj = new one[2];
obj[0] = new one();
obj[1] = new one();
obj[0].name = "IBM";
obj[1].name = "AGM";
顺便说一下,根据Java语言命名约定,类one
应该是大写的。
当我们接触它时,我会给你的One
类一个构造函数:
class One{
String name;
public One(String name){
this.name = name;
}
}
现在你可以在一行中创建整个数组:
One[] obj = new One[]{new One("IBM"),new One("AGM")};
(接下来我将name
字段设为私有,并添加getter方法等等。)
答案 1 :(得分:0)
您需要使用new
来创建one
个实例。现在,您的数组不包含任何实例,但您尝试在实例上设置name
属性。当你这样做
obj[0].name
obj[0]
为null,您无法在null上获取属性....
尝试类似......
one one1 = new one();
one1.name = "IBM"
obj[0] = one1;
顺便说一下,java中的类名应该是正确的驼峰......
答案 2 :(得分:0)
在这一行
one[] obj = new one[2];
您创建了一个包含两个元素的数组,但这些元素不是引用,而是one
类型的对象。您根本不会实际创建one
的任何实例。你可以这样做:
obj[0] = new one();
只有在创建这些实例后,才能像在此处一样为其字段指定值:
obj[0].name = "IBM";
在为obj[0]
分配任何引用之前,它等于null
。
答案 3 :(得分:0)
one[] obj = new one[2];
上面的语句只是创建一个大小为2的One []类型,但它不包含任何一个对象
首先,您需要为该位置创建对象,然后才能设置名称。
One temp = new One();
temp.name = "IBM";
obj[0] = temp;
答案 4 :(得分:0)
当使用Java创建对象数组时,每个元素都初始化为null。您必须自己初始化每个元素。 例如:
one[] obj = new one[2];
for(int i = 0; i < obj.length; i++)
{
obj[i] = new one();
}