1、对象数组就是数组里的每个元素都是类的对象,赋值是先定义对象,然后将对象直接赋给数组。
示例:
Monkey[] monkeys = new Monkey[10];
使用对象数组实现多个Monkey的管理。
注意:
1、当进行数组的动态扩展时,新数组的长度一般是当前数组长度的一半左右。
2、==(等号)比较的是对象的内存地址,比较基本类型时可以使用,
字符串中用equals方法比较其值,相等时返回true,否则返回false。
/**
对象数组
*/
import java.lang.*;
import java.util.*;
public class ObjectArrayDemo{
public static void main(String[] args){
MonkeyManager mm = new MonkeyManager();
//添加monkey测试
mm.add(new Monkey("悟空", '公'));
mm.add(new Monkey("悟饭", '公'));
mm.add(new Monkey("小白", '母'));
mm.list();
System.out.println("-----------------------");
//删除monkey测试
mm.delete("悟饭");
mm.list();
System.out.println("-----------------------");
//查找monkey测试
Monkey m1 = mm.find("小白");
m1.print();
System.out.println("-----------------------");
//修改monkey测试
Monkey m2 = new Monkey("小白", '公');
mm.update(m2);
mm.list();
System.out.println("-----------------------");
mm.add(new Monkey("小黑", '公'));
mm.add(new Monkey("小红", '母'));
mm.list();
}
}
/**
Monkey管理类
*/
class MonkeyManager{
private Monkey[] monkeys = new Monkey[3];
private int count = 0;//当前对象的个数
//添加monkey
public void add(Monkey m){
//当数组空间不足时,需要进行动态扩展
if(count >= monkeys.length){
//新数组的长度(当前数组长度的一半左右)
int newLen = (monkeys.length * 3) / 2 + 1;
monkeys = Arrays.copyof(monkeys.newLen);
}
if(count < monkeys.length){
monkeys[count] = m;
count++;
}
}
//遍历对象数组
public void list(){
for(int i = 0; i < count; i++){
monkeys[i].print();
}
}
//删除monkey
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];
}
//把最后一个元素赋值为null
monkeys[count - 1] = null;
count--;
break;
}
}
}
//查找monkey
public Monkey find(String name){
for(int i = 0; i < count; i++){
if(monkeys[i].getName().equals(name)){
return monkeys[i];
}
}
return null;
}
//修改monkey
public void update(Monkey monkey){
Monkey m = find(monkey.getName());
if(m != null){
m.setSex(monkey.getSex());
}
}
}
class Monkey{
private String name;
private char sex;
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);
}
}