Java面向对象_对象数组

时间:2023-03-10 06:00:29
Java面向对象_对象数组

今天学习了对象数组,写点东西总结一下。废话不多说,啥是对象数组呢?

对象数组的概念是这么讲的,对象数组就是数组里的每个元素都是类的对象,赋值时先定义对象,然后将对象直接赋给数组。

举个例子,使用对象数组实现多个Hero的管理

 import java.util.Arrays;
import java.util.Scanner; public class Test4 { /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
HeroManager hm=new HeroManager();
System.out.println("------增加英雄------");
Heros.print1();
hm.add(new Heros("关羽","男",30));
hm.add(new Heros("张飞","男",31));
hm.add(new Heros("刘备","男",32));
hm.add(new Heros("曹操","男",33));
hm.add(new Heros("孙权","男",34));
hm.list();
System.out.println("------查找英雄------");
Heros q=hm.find(34);
q.print();
System.out.println("------删除英雄------");
hm.delete(34);
hm.list();
System.out.println("------更新英雄------");
hm.update(new Heros("小郝","女",31));
hm.list();
} }
//管理类
class HeroManager{
private Heros[] heros=new Heros[3];
private int count=0;
public void add(Heros h){
if(count>=heros.length){
int newLen=heros.length*3/2+1;//一般扩充原来长度的一半
heros=Arrays.copyOf(heros, newLen);
}
heros[count]=h;
count++;
}
public Heros find(int id){
for(int i=0;i<count;i++){
if(heros[i].getId()==id){
return heros[i];
}
}
return null; }
//关羽 张飞 刘备 曹操
public void delete(int id){
for(int i=0;i<count;i++){
if(heros[i].getId()==id){
for(int j=i;j<count-1;j++){
heros[j]=heros[j+1];
}
heros[count-1]=null;
count--;
break;
}
}
}
public void update(Heros h1){
Heros m=find(h1.getId());
if(m!=null){
m.setName(h1.getName());
m.setSex(h1.getSex());
}
}
public void list(){ for(int i=0;i<count;i++){
heros[i].print();
}
} } //英雄类
class Heros{
private String name;
private String sex;
private int id;
public Heros(){ }
public Heros(String name,String sex,int id){
this.name=name;
this.sex=sex;
this.id=id;
}
public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public String getSex() {
return sex;
} public void setSex(String sex) {
this.sex = sex;
} public int getId() {
return id;
} public void setId(int id) {
this.id = id;
} public void print(){
System.out.println(name+"\t"+sex+"\t"+id);
}
public static void print1(){
System.out.println("姓名"+"\t"+"性别"+"\t"+"排名"+"\t");
} }