Java 创建具有构造函数功能的对象数组
我有这门课Java 创建具有构造函数功能的对象数组,java,Java,我有这门课 public class customer { int id; int status ; customer(int value) { id = value; status = 0; } } 我想创建一个由100个customer对象组成的数组。 如何将参数传递给customer类的constructor函数 public class barbershop { Queue WaitSeat ;
public class customer {
int id;
int status ;
customer(int value)
{
id = value;
status = 0;
}
}
我想创建一个由100个customer对象组成的数组。
如何将参数传递给customer类的constructor函数
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 !
}
}
在循环中创建对象并将其放置在阵列中
您需要单独创建每个对象,然后将其放置在阵列中。这是两个独立的操作(尽管它们可以在同一行中)。一个循环将使这更令人愉快
cc = new customer[100];
for(int i=0;i<cc.length;i++){
cc[i]=new customer(1);
}
cc=新客户[100];
对于(int i=0;i)在循环中创建对象并将其放置在数组中
您需要单独创建每个对象,然后将其放置在数组中。这是两个独立的操作(尽管它们可以在同一行中)。循环将使这一操作更加愉快
cc = new customer[100];
for(int i=0;i<cc.length;i++){
cc[i]=new customer(1);
}
cc=新客户[100];
对于(int i=0;i
这将创建一个refcc
,保存100个客户ref
for(int i=0;i>cc.length;i++){
cc[i]=new customer(1);
}
这将创建一个refcc
,保存100个客户ref
for(int i=0;i>cc.length;i++){
cc[i]=new customer(1);
}
公共级理发店{
排队等候座位;
排队等候室;
静态理发器[]bb;
静态客户[]抄送;
理发店(){
WaitSeat=新的优先级队列(4);
等候室=新的优先队列(13);
bb=新理发师[3];
对于(i=0;i公共级理发店{
排队等候座位;
排队等候室;
静态理发器[]bb;
静态客户[]抄送;
理发店(){
WaitSeat=新的优先级队列(4);
等候室=新的优先队列(13);
bb=新理发师[3];
对于(i=0;i首先,类应始终使用CamelCase编写。
其次,我认为这是不可能的。您可以使用如下的for循环:
cc = new Customer[100];
for(int i = 0; i < 100; i++) {
cc[i] = new Customer(i);
}
cc=新客户[100];
对于(int i=0;i<100;i++){
cc[i]=新客户(i);
}
首先,类应始终使用CamelCase编写。
其次,我认为这是不可能的。您可以使用如下的for循环:
cc = new Customer[100];
for(int i = 0; i < 100; i++) {
cc[i] = new Customer(i);
}
cc=新客户[100];
对于(int i=0;i<100;i++){
cc[i]=新客户(i);
}
将数组
初始化与对象初始化混淆
cc
是客户的数组(注意,此处大写)
为了访问Customer
的构造函数并获取实例,您需要用实例填充数组
要简化您的问题,您可以执行以下操作:
cc = new Customer[100];
Arrays.fill(cc, new Customer(1));
这将使用100个元素填充100个大小的数组
,这些元素引用客户
的一个实例,其id
将为1
注意,该实例是跨100个元素共享的
反过来,如果修改一个元素,则“修改整个数组”,如下所示
独立示例
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);
}
}
}
输出
[Customer 1, Customer 1, Customer 1, Customer 1, Customer 1, Customer 1, Customer 1, Customer 1, etc...]
[Customer 2, Customer 2, Customer 2, Customer 2, Customer 2, Customer 2, Customer 2, Customer 2, etc...]
将数组
初始化与对象初始化混淆
cc
是客户的数组(注意,此处大写)
为了访问Customer
的构造函数并获取实例,您需要用实例填充数组
要简化您的问题,您可以执行以下操作:
cc = new Customer[100];
Arrays.fill(cc, new Customer(1));
这将使用100个元素填充100个大小的数组
,这些元素引用客户
的一个实例,其id
将为1
注意,该实例是跨100个元素共享的
反过来,如果修改一个元素,则“修改整个数组”,如下所示
独立示例
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);
}
}
}
输出
[Customer 1, Customer 1, Customer 1, Customer 1, Customer 1, Customer 1, Customer 1, Customer 1, etc...]
[Customer 2, Customer 2, Customer 2, Customer 2, Customer 2, Customer 2, Customer 2, Customer 2, etc...]
这是一个有趣的替代方案。公平地说,这会用对同一对象的引用填充数组吗?这可能是OP想要的,但对可变对象来说可能是危险的objects@RichardTingle谢谢你的评论-我实际上意识到我的回答中的措辞非常模糊:不是100个例子,当然是100个引用1个实例。这是一个有趣的替代方案。可以公平地说,这会用对同一对象的引用填充数组。这可能是OP想要的,但对可变对象来说可能是危险的objects@RichardTingle谢谢你的评论-我实际上意识到我的回答中的措辞非常模糊:不是100英寸tances,但当然100次引用1个实例。我想说的是,当代码被修改时,以后容易出现错误。也添加了这个。谢谢。更好。最后一件事:您省略了cc=new customer[100]
行,假设您坚持数组大小为100,那么您的循环应该是行(i=0;iI会这么说;当代码被修改时,以后容易出现错误。也添加了这个。谢谢。好多了。最后一件事;您省略了cc=new customer[100]
行,假设您坚持使用100的数组大小,那么您的循环应该是for(i=0;i)