首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Java中创建对象数组

在Java中创建对象数组
EN

Stack Overflow用户
提问于 2011-03-20 03:13:09
回答 5查看 798.6K关注 0票数 211

我对Java是个新手,当时我用Java创建了一个对象数组。

举个例子,我有一个A级-

代码语言:javascript
复制
A[] arr = new A[4];

但这只是创建指向A的指针(引用),而不是4个对象。这是正确的吗?我发现当我试图访问创建的对象中的函数/变量时,我得到了一个空指针异常。为了能够操作/访问对象,我必须这样做:

代码语言:javascript
复制
A[] arr = new A[4];
for (int i = 0; i < 4; i++) {
    arr[i] = new A();
}

这是正确的还是我做错了什么?如果这是正确的,它真的很奇怪。

编辑:我觉得这很奇怪,因为在C++中,您只需输入A[4],它就会创建四个对象。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-03-20 03:19:21

这是正确的。

代码语言:javascript
复制
A[] a = new A[4];

...creates 4 A引用,类似于这样做:

代码语言:javascript
复制
A a1;
A a2;
A a3;
A a4;

现在,如果不像下面这样分配a1,就不能执行a1.someMethod()

代码语言:javascript
复制
a1 = new A();

类似地,对于数组,您需要执行以下操作:

代码语言:javascript
复制
a[0] = new A();

...before使用它。

票数 276
EN

Stack Overflow用户

发布于 2011-03-20 03:21:39

这是正确的。您还可以执行以下操作:

代码语言:javascript
复制
A[] a = new A[] { new A("args"), new A("other args"), .. };

此语法还可用于在任何位置创建和初始化数组,例如在方法参数中:

代码语言:javascript
复制
someMethod( new A[] { new A("args"), new A("other args"), . . } )
票数 85
EN

Stack Overflow用户

发布于 2014-01-05 18:14:53

下面是创建包含10个employee对象的数组的清晰示例,其中包含一个带参数的构造函数:

代码语言:javascript
复制
public class MainClass
{  
    public static void main(String args[])
    {
        System.out.println("Hello, World!");
        //step1 : first create array of 10 elements that holds object addresses.
        Emp[] employees = new Emp[10];
        //step2 : now create objects in a loop.
        for(int i=0; i<employees.length; i++){
            employees[i] = new Emp(i+1);//this will call constructor.
        }
    }
}

class Emp{
    int eno;
    public Emp(int no){
        eno = no;
        System.out.println("emp constructor called..eno is.."+eno);
    }
}
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5364278

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档