java对象数组的认识和使用

一、对象数组

对象数组,是指包含了一组相关的对象,即可以存放多种不同的数据类型,然后我们通过对象来调用我们所存放的数据。但是在对象数组的使用中:数组一定要先开辟空间,但是因为其是引用数据类型,所以数组里面的每一个对象都是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;
            }
        }

结果:
在这里插入图片描述

总结

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

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值