一、对象数组

对象数组,是指包含了一组相关的对象,即可以存放多种不同的数据类型,然后我们通过对象来调用我们所存放的数据。但是在对象数组的使用中:数组一定要先开辟空间,但是因为其是引用数据类型,所以数组里面的每一个对象都是null值,则在使用的时候数组中的每一个对象必须分别进行实例化操作,否则会报空指针异常*。

二、认识对象数组

//对象数组:数组中每一个元素为一个对象。
//为对象数组分配内存空间:
Fruits [] fruits = new fruits[5];//创建对象数组
 for (int i = 0; i < fruits.length; i++) {   //对象数组动态初始化
                    fruits [i] = new Fruits();  //对象实例化
                }
   /*对象数组的定义需要它需要为每一个元素进行实例化
    没有实例化,会报“空指针异常”的错误。对象和数不一样,对象数组中为对象,如果没有实例化,代表没有对象,也就是说用不存在的东西操作,本身这个操作也是不存在的。
   */
   //如果没有初始化,会发生如下异常:
*Exception in thread "main" java.lang.NullPointerException: Cannot assign field "num" because "fruits[i]" is null*

三、使用实例

public class FruitsTest {
    public static void main(String[] args) {

        Fruits[] fruits = new Fruits[5]; //创建对象数组
                for (int i = 0; i < fruits.length; i++) {   //对象数组动态初始化
                    fruits [i] = new Fruits();  //对象实例化
                }
                FruitsTest test = new FruitsTest(); //需要先创建FruitsTest对象,才能调用其他的方法
                //1.对对象数组赋初始值
                test.fuZhi(fruits);
                //2.遍历水果信息
                test.print(fruits);
                //3.根据月份按照冒泡排序进行重新排序
                test.bubble(fruits);
                //4.查找数量为10的水果信息
                test.search(fruits,5);
            }
           //    1.对象数组的赋值

            public void fuZhi(Fruits[] fruits){
                for (int i = 0; i < fruits.length; i++) {
                    fruits[i].num = (i + 1);
                    fruits[i].quantity = (int)(Math.random()*10);
                    fruits[i].mature = (int)(Math.random()*3);
                }
            }
            //   2.遍历数组水果的信息

            public void print(Fruits[] fruits){
                System.out.println("水果的基本信息是:");
                for (int i = 0; i < fruits.length; i++) {
                    System.out.println(fruits[i].show());
                }
            }
            //    3.根据数量按照冒泡排序进行重新排序

            public void bubble(Fruits[] fruits){
                for (int i = 0; i < fruits.length - 1; i++) {
                    for (int j = 0; j < fruits.length - 1 -i; j++) {
                        if(fruits[j].quantity > fruits[j+1].quantity){
                            Fruits temp = fruits[j];
                            fruits[j] = fruits[j+1];
                            fruits[j+1] = temp;
                        }
                    }
                }
                System.out.println("冒泡排序后的水果信息为:");
                for (int i = 0; i < fruits.length; i++) {
                    System.out.println(fruits[i].show());
                }
            }
            //    4.查找数量为10的水果信息

            public void search(Fruits[] fruits, int number){
                System.out.println("数量为"+number+"的水果信息如下:");
                int a=0;
                for (int i = 0; i < fruits.length; i++) {
                    if(fruits[i].quantity == number){
                        a++;
                        System.out.println(fruits[i].show());
                    }
                }
                if(a==0){
                    System.out.println("没有数量为"+number+"的水果!");
                }
            }
        }

        class Fruits {
            int num; //水果编号
            int mature;    //成熟度
            int quantity;    //月份
            //   展示水果信息

            public String show(){
                return "水果编号:"+num+" \t 数量:"+quantity+"  \t  成熟度(0代表未成熟,1代表刚成熟,2代表过成熟):"+mature;
            }
        }

结果:

java对象数组的引用传递参数 java中对象数组的使用_java对象数组的引用传递参数

总结

本文总结对象数组使用时需要注意的异常,空指针异常,尤其是多次使用时一定要注意实例化这个问题!