Java复习——对象数组

来源:互联网 发布:啪嗒砰3召唤奇迹数据 编辑:程序博客网 时间:2024/05/03 21:00

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);      }}
0 0