创建具有构造函数的对象数组

时间:2014-05-27 12:42:36

标签: java

我有这个课程

public class customer {

    int id;
    int status ;
    customer(int value)
    {

        id = value;
        status = 0;

    }
}

我想创建一个由100个客户对象组成的数组。 如何将参数传递给客户类的约束函数?

public class barbershop {
    Queue WaitSeat ;
    Queue WaitRoom ;
    static barber [] bb ;
    static customer [] cc;
    barbershop(){
        WaitSeat = new PriorityQueue(4);
        WaitRoom = new PriorityQueue(13);
        bb = new barber[3];
        cc = new customer [100]{1}; // problem !

    }

}

5 个答案:

答案 0 :(得分:4)

在循环中创建对象并将它们放在数组

您需要单独创建每个对象,然后将其放入数组中。这是两个单独的操作(尽管它们可以在同一行内)。循环将使这更加令人愉快。

cc = new customer[100];
for(int i=0;i<cc.length;i++){
    cc[i]=new customer(1);
}

对于没有参数构造函数的对象

虽然编译器没有抱怨我不相信bb = new barber[3];做了你认为它做的事情。它创建一个足够大的数组,以适应对Barber对象的3个引用。但它不会创建那些对象,只会创建数组。此时bb包含{null, null, null},因此您需要使用类似的循环来填充bbBarber个对象。

Java命名约定

将UpperCamelCase用于类名也是惯例。因此customer应为Customerbarber应为Barber。同名变量名称应为lowerCamelCase,因此WaitSeat应为waitSeatWaitRoom应为waitRoom

答案 1 :(得分:1)

您将array初始化与对象初始化混淆。

ccarray的{​​{1}}(请注意,此处大写)。

要访问Customer的构造函数并获取实例,您需要使用实例填充Customer

为简化您的问题,您可以:

array

这将为您的100个 cc = new Customer[100]; Arrays.fill(cc, new Customer(1)); 填充100个元素,引用array Customer id的{​​{1}}个实例。

谨慎提醒,该实例在100个元素中共享。

反过来,如果您修改一个元素,则修改整个数组&#34;,如下所示。

自包含示例

1

<强>输出

public class Main {

    public static void main(String[] args) {
        // initializing array
        Customer[] cc = new Customer[100];
        // filling array
        Arrays.fill(cc, new Customer(1));
        // printing array
        System.out.println(Arrays.toString(cc));
        // changing any array element
        cc[0].setId(2);
        // printing array again
        System.out.println(Arrays.toString(cc));
    }

    static class Customer {
        int id;
        int status;

        Customer(int value) {
            id = value;
            status = 0;
        }
        // invoking this method on any object of the array will update all references
        public void setId(int value) {
            id = value;
        }

        @Override
        public String toString() {
            return String.format("Customer %d", id);
        }
    }
}

答案 2 :(得分:0)

cc = new customer [100]

这会创建一个包含cc的参考100 Customer refs

for(int i=0;i>cc.length;i++){
    cc[i]=new customer(1);
}

答案 3 :(得分:0)

首先,应始终使用CamelCase编写类 其次,我不认为这是可能的。你可以像这样使用for循环:

cc = new Customer[100];
for(int i = 0; i < 100; i++) {
    cc[i] = new Customer(i);
}

答案 4 :(得分:-1)

public class barbershop {
    Queue WaitSeat ;
    Queue WaitRoom ;
    static barber [] bb ;
    static customer [] cc;
    barbershop(){
        WaitSeat = new PriorityQueue(4);
        WaitRoom = new PriorityQueue(13);
        bb = new barber[3];

        for(i=0;i<100;i++)
        {
          cc[i] = new customer (i); 
        }

    }

}