为什么在';主要';java.lang.NullPointerException
我得到一个为什么在';主要';java.lang.NullPointerException,java,arrays,nullpointerexception,Java,Arrays,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);
空点异常
。就这些,有人知道为什么吗
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);
}
}
您需要使用
new
创建one
实例。现在,您的数组不包含任何实例,但您正在尝试设置实例的name
属性。当你这样做的时候
obj[0]。名称
obj[0]
为null,您无法获取null上的属性
试试像
one one1 = new one();
one1.name = "IBM"
obj[0] = one1;
顺便说一句,java中的类名应该正确地用驼峰大小写…在这一行
one[] obj = new one[2];
创建一个包含两个元素的数组,但这些元素不是类型为one
的引用对象。实际上,您根本不会创建任何one
的实例。您可以这样做:
obj[0] = new one();
one[] obj = new one[2];
obj[0] = new one();
obj[1] = new one();
obj[0].name = "IBM";
obj[1].name = "AGM";
只有创建这些实例后,才能像在此处所做的那样为其字段赋值:
obj[0].name = "IBM";
在将任何引用分配给obj[0]
之前,它等于null
one[] obj = new one[2];
这为两个一个对象创建了空间,但实际上并没有创建它们
这样做:
obj[0] = new one();
one[] obj = new one[2];
obj[0] = new one();
obj[1] = new one();
obj[0].name = "IBM";
obj[1].name = "AGM";
顺便说一句,根据Java语言命名约定,类one
应该是大写的
当我们在做的时候,我会给你的一个a类构造函数:
class One{
String name;
public One(String name){
this.name = name;
}
}
现在您可以在一行中创建整个阵列:
One[] obj = new One[]{new One("IBM"),new One("AGM")};
(接下来,我将把name
字段设置为私有,并添加一个getter方法,等等)
上面的语句只创建大小为2的One[]类型,但它不包含任何一个对象
首先,您需要为该位置创建对象,然后只有您可以设置名称
One temp = new One();
temp.name = "IBM";
obj[0] = temp;
在Java中创建对象数组时,每个元素都初始化为null。您必须自己初始化每个元素。
例:
one[]obj=新的[2];
for(int i=0;i
补充您的答案: