为什么在';主要';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
补充您的答案: