首先,我们要明确对象数组的概念:如果一个数组中的元素是对象类型,则称该数组为对象数组。当需要一个类的多个对象时,应该用该类的对象数组来表示,通过改变下标值就可以访问到不同的对象。对象数组的定义与一般数组的定义类似,但是需要为每一个元素实例化。
对象可以用数组来存放,通过下面两个步骤来实现。
1 声明以类为数据类型的数组变量,并用new分配内存空间给数组。
2 用new产生新的对象,并分配内存空间给它。
下面介绍4种方式来定义对象数组
1.静态方式
Person p1[] = {
new Person(),
new Person(),
new Person()
};
2.动态初始化化
Person p2[];
p2 = new Person[3];
for(int i=0;i
{
p2[i] = new Person();
}
3.数组元素指向所定义的对象
Person p3[];
p3 = new Person[3];
p3[0] = new Person();
p3[1] = new Person();
p3[2] = new Person();
4.创建对象数组,并分配对象空间
Person p4[] = new Person[3];
p3[0] = new Person();
p3[1] = new Person();
p3[2] = new Person();
可以将对象数组的声明和创建用一条语句来完成。例如:定义一个学生类对象数组,可以用下面的语句定义:Student stu[ ]=new Student[30]; stu [ ]是对象数组名,它所表示的数组一共有30个元素,每一个元素都是Student类的对象名,还没有实例化,所以还必须为每一个元素实例化。比如如下的过程:
for(int i=0;i<stu.length;i++)
stu[i]=new Student();
实例化以后就可以使用每一个元素对象。下面我们来看一个例子:设计一个雇员类,并创建雇员类的对象数组,输出每个雇员的信息。
//设计一个雇员类,并创建雇员类的对象数组,输出每个雇员的信息
class Employee { //雇员类
private String id; //编号
private String name; //姓名
private int age; //年龄
private String vocation; //职务
public Employee(){} //构造方法一
public Employee(String id,String name,int age,String vocation){
set(id,name,age,vocation);
}
//设置属性的方法
public void set(String id,String name,int age,String vocation){
this.id=id;
this.name=name;
this.age=age;
this.vocation=vocation;
}
public String toString() {
String mess=id+","+name+","+age+","+vocation;
return mess;
}
}
public class Example4 {
public static void main(String[] args) {
Employee 雇员[]=new Employee[3];
int i;
for(i=0;i<雇员.length;i++)//为对象数组中每一个元素实例化
雇员[i]=new Employee();//如果没有写构造方法一,而这样写,会出错
//因为类中有有参的构造方法,系统就不会在默认给无参的构造方法了,
//所以当类中写了有参的构造方法后,要用无参的构造方法时必须写出来
//每一个对象元素分别初始化
雇员[0].set("0001","张文军",50,"总经理");
雇员[1].set("0002","李琦",45,"副经理");
雇员[2].set("1016","张丽",28,"秘书");
for (Employee employee:雇员)
System.out.println(employee.toString());
}
}
下面我们分别来看普通型for循环和增强型for循环:
普通型
a={1,2,3,4,5};
for(int i=0;i<a.length;i++) {
System.out.println9(a[1]);
}
增强型
for(int element:a) {
System.out.println(element);
}
两者结果相同,但是增强型更为简洁。当然,对象数组还可以采用初始化的方法创建。创建形式是:类名 对象数组名[ ]={对象列表};具体的实例我们可以参照动力节点在线的视频课程中给出的相关实例进行分析。
提枪策马乘胜追击04-21 20:01
代码小兵87207-15 12:10
杨晶珍05-11 14:54
杨晶珍05-12 17:30