Java复习——对象数组

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值