Java面向对象_对象数组

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

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

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

  1 import java.util.Arrays;
  2 import java.util.Scanner;
  3
  4 public class Test4 {
  5
  6     /**
  7      * @param args
  8      */
  9     public static void main(String[] args) {
 10         // TODO Auto-generated method stub
 11         HeroManager hm=new HeroManager();
 12         System.out.println("------增加英雄------");
 13         Heros.print1();
 14         hm.add(new Heros("关羽","男",30));
 15         hm.add(new Heros("张飞","男",31));
 16         hm.add(new Heros("刘备","男",32));
 17         hm.add(new Heros("曹操","男",33));
 18         hm.add(new Heros("孙权","男",34));
 19         hm.list();
 20         System.out.println("------查找英雄------");
 21         Heros q=hm.find(34);
 22         q.print();
 23         System.out.println("------删除英雄------");
 24         hm.delete(34);
 25         hm.list();
 26         System.out.println("------更新英雄------");
 27         hm.update(new Heros("小郝","女",31));
 28         hm.list();
 29     }
 30
 31 }
 32 //管理类
 33 class HeroManager{
 34     private Heros[] heros=new Heros[3];
 35     private int count=0;
 36     public void add(Heros h){
 37         if(count>=heros.length){
 38             int newLen=heros.length*3/2+1;//一般扩充原来长度的一半
 39             heros=Arrays.copyOf(heros, newLen);
 40         }
 41         heros[count]=h;
 42         count++;
 43         }
 44     public Heros find(int id){
 45         for(int i=0;i<count;i++){
 46             if(heros[i].getId()==id){
 47                 return heros[i];
 48             }
 49         }
 50         return null;
 51
 52     }
 53     //关羽  张飞  刘备 曹操
 54     public void delete(int id){
 55         for(int i=0;i<count;i++){
 56             if(heros[i].getId()==id){
 57                 for(int j=i;j<count-1;j++){
 58                     heros[j]=heros[j+1];
 59                 }
 60                 heros[count-1]=null;
 61                 count--;
 62                 break;
 63             }
 64         }
 65     }
 66     public void update(Heros h1){
 67         Heros m=find(h1.getId());
 68         if(m!=null){
 69             m.setName(h1.getName());
 70             m.setSex(h1.getSex());
 71         }
 72     }
 73     public void list(){
 74
 75         for(int i=0;i<count;i++){
 76             heros[i].print();
 77         }
 78     }
 79
 80
 81     }
 82
 83
 84 //英雄类
 85 class Heros{
 86     private String name;
 87     private String sex;
 88     private int id;
 89     public Heros(){
 90
 91     }
 92     public Heros(String name,String sex,int id){
 93         this.name=name;
 94         this.sex=sex;
 95         this.id=id;
 96     }
 97     public String getName() {
 98         return name;
 99     }
100
101     public void setName(String name) {
102         this.name = name;
103     }
104
105     public String getSex() {
106         return sex;
107     }
108
109     public void setSex(String sex) {
110         this.sex = sex;
111     }
112
113     public int getId() {
114         return id;
115     }
116
117     public void setId(int id) {
118         this.id = id;
119     }
120
121     public void print(){
122         System.out.println(name+"\t"+sex+"\t"+id);
123     }
124     public static void print1(){
125         System.out.println("姓名"+"\t"+"性别"+"\t"+"排名"+"\t");
126     }
127
128 }
时间: 2024-08-07 17:02:32

Java面向对象_对象数组的相关文章

Java面向对象_对象内存分析—值传递和引用传递

对象内存分析,我一直学的比较模糊,今天抽空整理一下,希望能理清. 先说一下,内存分析从何而来,这对于我们这些刚接触java的人来说都比较模糊,就从new关键字说起吧. new关键字表示创建一个对象或者说是实例化对象或者说是申请内存空间,所有程序运行都需要内存来存储数据,这样内存的概念就出来了.举个例子说明:定义一个类Person,属性:char a;int sge;那么创建一个对象申请的内存空间就是所有属性所占字节之和,为6个字节. 详细理一下对象在内存中的结构: Person p=new Pe

学java教程之对象数组

学编程吧学java教程之对象数组发布了,欢迎通过xuebiancheng8.com来访问 什么是对象数组呢,对象数组顾名思义是对象的数组. 首先定义一个对象 public class Student{ private String username; private String password; setter,getter.... } 如上面所示,定义了一个Student对象 加入现在需要3个Student对象怎么办呢,我们得 Student stu1 = new Student(); St

java中的对象数组

对象数组,很容易顾名思义理解为:数组中的元素都是一个个的对象.但这种理解是错误的,数组中存放的并不是对象本身,而是对象的引用,即指向对象的那个指针,而这个指针是存放在虚拟机内存的栈中. 对象数组的创建需要两个步骤:1)创建一个数组,存放对象的引用.2)具体指出每个引用指向哪个对象(用new实现).下面举例说明. 假设有一个类,类名为Test.1)Test[] array = new Test[2]; 创建一个数组取名为array,里面共有2个元素,每个元素的类型是Test对象的引用.此时arra

重踏学习Java路上_Day15(对象数组,集合类,列表)

1:对象数组(掌握)    (1)数组既可以存储基本数据类型,也可以存储引用类型.它存储引用类型的时候的数组就叫对象数组.    (2)案例:        用数组存储5个学生对象,并遍历数组. public class Student {    // 成员变量    private String name;    private int age; // 构造方法    public Student() {        super();    } public Student(String n

Java面向对象_常用类库api——对象比较器

概念:对两个或多个数据项进行比较,以确定他们是否相等,或确定他们之间的大小关系及排列顺序成为比较. 1.Comparable接口: 此接口强行对实现它的每个类的对象进行整体排序.这种排序被称为类的自然排序,类的compareTo方法被称为它的自然比较方法. 1 public class ComparableDemo { 2 3 /** 4 * @param args 5 */ 6 public static void main(String[] args) { 7 // TODO Auto-ge

Java面向对象----String对象的声明和创建

String a="abcd"  相等  String b="abcd" String a=new String("abcd")   不等于  String  b=new String("abcd")     字符串池内存地址不同 对象不可变  常量 "abcd"+"a"   拼接 等于新创建了对象  abcda 面向对象的优点 便于程序模拟现实世界中的实体 隐藏细节 可重用 java对

面向对象_对象的内存体现

对象与内存的分析: 1.new关键字深入 1.new关键字表示创建一个对象 2.new关键字表示实例化对象 3.new关键字表示申请内存空间 注意:如果使用一个没有申请内存空间的对象,会报空指针异常:java.lang.NullPoingerException 2.对象内存分析 1 public class sixtyThree { 2 public static void main(String[] args) { 3 Dog d = new Dog();//声明一个对象并且实例化对象 4 5

Java面向对象_包装类访问修饰符

在java中有一个设计的原则"一切皆对象",java中的基本数据类型就完全不符合这种设计思想,因为八种基本数据类型并不是引用数据类型,所以java中为了解决这样的问题,jdk1.5以后引入了八种基本数据类型的包装类. 八种包装类分为两大类型: Number:Integer.Short.Long.Double.Float.Byte都是Number的子类表示一个数字. Object:Character.Boolean都是Object的直接子类. 1 public class Test5 {

Java面向对象_常用类库api——日期操作类

Data类 类Data表示特定的瞬间,精确到毫秒,也就是程序运行时的当前时间 Data data=new Data();//实例化Data对象,表示当前时间 Calendar类 日历类,使用此类可以将时间精确到毫秒显示. //两种实例化方式 Calendar c=Calendar.getInstance();//Calendar类是抽象类,不能直接new Calendar c=new GregorianCalendar(); DateFormat类及子类SimpleDateFormat 例: 1