当前位置 博文首页 > YHSevenWater的博客:Java对象数组的使用;不同类与同类中属性和

    YHSevenWater的博客:Java对象数组的使用;不同类与同类中属性和

    作者:[db:作者] 时间:2021-08-11 16:06

    一个Java程序展示(1)对象数组的使用;(2)不同类、同类中属性与方法的调用;(3)方法的封装

    对象数组:数组中每一个元素为一个对象。
    为对象数组分配内存空间:

    Animal [] animal = new Animal[10];
    

    对象数组动态初始化并实例化:

    for(int i = 0; i< animal.length; i++){
    	animal[i] = new Animal();
    }
    

    对 象 数 组 的 定 义 其 实 与 一 般 数 组 类 似 , 唯 一 的 区 别 在 于 它 需 要 为 每 一 个 元 素 进 行 实 例 化 \color{Red}{对象数组的定义其实与一般数组类似,唯一的区别在于它需要为每一个元素进行实例化}
    ????在此的实例化过程是不能够省略的,省略会报“空指针异常”的错误(本人亲测)。在此,我对上述区别的理解是:类中的对象与对象是互不相同的(就像我们自己都是这个世界上独一无二的个体一样),所以需要对对象数组中的元素(对象)逐一实例化。

    下面的程序将逐一展示三点的应用:
    package com.java.oop;
    import java.util.Random;
    /**
     * @ClassName AnimalTest
     * @Description:    1.对象数组的使用;2.不同类与同类中属性与方法的调用;3.方法的封装
     * @Author Seven
     * @Date 2021/7/26 8:33
     * @Version 1.0
     **/
    public class AnimalTest {
        public static void main(String[] args) {    //主方法尽量写得简洁一点,增加代码的阅读性。
            Animal [] animal = new Animal[10]; //创建对象数组
            for (int i = 0; i < animal.length; i++) {   //对象数组动态初始化
                animal [i] = new Animal();  //对象实例化
            }
            AnimalTest test = new AnimalTest(); //需要先创建AnimalTest对象,才能调用其他的方法
            //1.对对象数组赋初始值
            test.fuZhi(animal);
            //2.遍历动物信息
            test.print(animal);
            //3.根据年龄按照冒泡排序进行重新排序
            test.bubble(animal);
            //4.查找年龄为10的动物信息
            test.search(animal,10);
        }
        /**
         * @Description:    1.对象数组的赋值
         * @Author: Seven
         * @Date: 2021/7/26 10:35
         *  * @param animal
         * void
         **/
        public void fuZhi(Animal [] animal){
            for (int i = 0; i < animal.length; i++) {
                animal[i].nameNo = (i + 1);
                animal[i].age = (int)(Math.random()*31);
                animal[i].sex = (int)(Math.random()*2);
            }
        }
        /**
         * @Description:    2.遍历数组动物的信息
         * @Author: Seven
         * @Date: 2021/7/26 9:41
         *  * @param animal
         * void
         **/
        public void print(Animal [] animal){
            System.out.println("动物的基本信息是:");
            for (int i = 0; i < animal.length; i++) {
                System.out.println(animal[i].show());
            }
        }
        /**
         * @Description:    3.根据年龄按照冒泡排序进行重新排序
         * @Author: Seven
         * @Date: 2021/7/26 9:42
         *  * @param animal
         * void
         **/
        public void bubble(Animal [] animal){
            for (int i = 0; i < animal.length - 1; i++) {
                for (int j = 0; j < animal.length - 1 -i; j++) {
                    if(animal[j].age > animal[j+1].age){
                        Animal temp = animal[j];
                        animal[j] = animal[j+1];
                        animal[j+1] = temp;
                    }
                }
            }
            System.out.println("冒泡排序后的动物信息为:");
            for (int i = 0; i < animal.length; i++) {
                System.out.println(animal[i].show());
            }
        }
        /**
         * @Description:    4.查找年龄为10的动物信息
         * @Author: Seven
         * @Date: 2021/7/26 15:12
         *  * @param animal
         * @param number
         * void
         **/
        public void search(Animal [] animal, int number){
            System.out.println("年龄为"+number+"的动物信息如下:");
            for (int i = 0; i < animal.length; i++) {
                if(animal[i].age == number){
                    System.out.println(animal[i].show());
                }
            }
        }
    }
    
    class Animal{
        int nameNo; //动物编号
        int sex;    //性别
        int age;    //年龄
        /**
         * @Description:    展示动物信息
         * @Author: Seven
         * @Date: 2021/7/26 9:41
         *  * @param
         * java.lang.String
         **/
        public String show(){
            return "动物编号:"+nameNo+"\t年龄:"+age+"\t性别(0代表母,1代表公):"+sex;
        }
    }
    

    在这里插入图片描述

    cs
    下一篇:没有了