对象数组
课程大纲
一、 对象数组
1、 对象数组就是数组里的每个元素存储的都是类的对象,赋值时先定义对象,然后将对象直接赋值给数组。
示例:Monkey[] monkeys = new Monkey[10];
使用对象数组实现对多个Monkey的管理
import java.util.Arrays;
/**
对象数组
*/
class ObjectArrayDemo
{
public static void main(String[] args)
{
MonkeyManger mm = new MonkeyManger();
//添加
mm.add(new Monkey(“小白”,’母’));
mm.add(new Monkey(“威哥”,’公’));
mm.add(new Monkey(“苍老师”,’母’));
mm.list();
System.out.println(“—————-“);
System.out.println(“删除后的结果显示:”);
//删除
mm.delete(“苍老师”);
mm.list();
//查找
System.out.println(“—————-“);
System.out.println(“查找后的结果:”);
Monkey m1 = mm.find(“小白”);
m1.print();
//修改测试
System.out.println(“—————–”);
Monkey m2 =new Monkey(“小白”,’公’);
mm.update(m2);
System.out.println(“修改过后:”);
mm.list();
}
}
class MonkeyManger
{
private Monkey[] monkeys = new Monkey[3];
private int count = 0;//当前对象的个数
//添加Monkey
public void add(Monkey m)
{
if(count<monkeys.length)
{
monkeys[count] = m;
count++;
}
else
{
System.out.println("空间已满");
}
/*
//当空间不足时,需要动态扩展
public void adds(Monkey m)
{
if(count>=monkeys.length)
{ //新数组的长度为原来的1.5倍,扩展一般,
int newlen = (monkeys.length*3)/2 + 1;
monkeys = Arrays.copyOf(monkeys,newlen);
}
monkeys[count] = m;
count++;
}
*/
}//修改
public void update(Monkey monkey)
{
Monkey m = find(monkey.getName());
if(m!=null)
{
m.setSex(monkey.getSex());
}
}
//查找
public Monkey find(String name)
{
for(int i = 0;i<count;i++)
{
if(monkeys[i].getName().equals(name))
{
return monkeys[i];
}
}
return null;
}
//删除
//根据对象名字删除对象
public void delete(String name)
{
for(int i = 0;i<count;i++)
{
//equals表示比较两个字符串对象的值是否相等
//==表示两个对象的内存地址是否一样
if(monkeys[i].getName().equals(name))
{ //每个对象都要往前移动
for(int j = i;j<count-1;j++)
{
monkeys[j] = monkeys[j+1];
}
//最后一个对象的地址赋值成空
monkeys[count-1] = null;
count--;
break;
}
}
}
//遍历输出数组对象
public void list()
{
for(int i = 0;i<count;i++)
{
//System.out.println(monkeys[i]);
monkeys[i].print();
}
}
}
class Monkey
{
private String name;
private char sex;
public Monkey()
{
}
public Monkey(String name,char sex)
{
this.name = name;
this.sex = sex;
}
public void setName(String name)
{
this.name = name;
}
public String getName()
{
return name;
}
public void setSex(char sex)
{
this.sex = sex;
}
public char getSex()
{
return sex;
}
public void print()
{
System.out.println(“name =”+name+”,sex = “+sex);
}
}