014.day14

本文深入讲解Java中的枚举类型定义与使用、异常处理机制及集合框架的基本操作,通过实例演示如何利用这些特性增强程序的健壮性和灵活性。

枚举

1.概述

引用类型,规定了取值范围的变量类型

2.定义方式
public enum Score {
    A("90-100", "优秀") {
        // 在枚举元素中可以覆盖外部定义的方法
        public boolean hasWork() {
            return false;
        }
    },
    B("80-90", "良好"), C("70-80", "及格"), D("60-70", "挂科"), E("无成绩", "缺考");
}
  • 所有的值之间使用逗号分隔,结尾的分号可以省略
3.枚举类型
// TODO 枚举类型
        Score score = Score.B;
        // 获取枚举的序数
        System.out.println(score.ordinal());// 1
        // 枚举元素间的比较,序数做差(前减后)
        System.out.println(Score.A.compareTo(Score.B));// -1
        // 输入一个学生成绩,如果在90-100分,则为A,顺次排列,要求输入成绩后输出一个成绩的评价
        String grade = getGrade();
        // valueOf(Class<T> enumType, String name)
        // 返回一个枚举常量,第一个参数:指定枚举类型(Score.class),第二个参数:字符串->枚举常量
        // 能够将一个字符串变量与相应的枚举常量建立联系,可以实现动态的判断
        score = Score.valueOf(Score.class, grade);
        switch (score) {
        case A:
            System.out.println("优秀");
            break;
        case B:
            System.out.println("良好");
            break;
        case C:
            System.out.println("及格");
            break;
        case D:
            System.out.println("挂科");
            break;

        default:
            System.out.println("缺考");
            break;
        }

    }
4.枚举的遍历
// TODO 枚举的遍历
        //返回一个数组
        Score[] scores = Score.values();
        for (Score score : scores) {
            // 返回此枚举常量的名称
            System.out.print(score.name() + "\t"); //A B C D E
            // 返回枚举常量的序数(它在枚举声明中的位置,其中初始常量序数为零)。
            System.out.print(score.ordinal() + "\t");// 0 1 2 3 4 
        }

异常

1.异常的语法结构
// TODO 异常的语法结构
        System.out.println("开始运行");
        // try-catch引导代码块
        // try -> 执行相应的代码
        try {
            test();
        } catch (ArithmeticException e) {
            // catch(XXXException e) 要捕获的异常类型
            // 相应异常的解决方法
            e.printStackTrace();// 打印异常信息
            System.out.println("异常捕获");
        }
        System.out.println("运行结束");
2.常见的异常
// TODO 常见的异常
        // throw new NullPointerException();// 空指针->对象没有实例化(指向为null)
        // throw new ArrayIndexOutOfBoundsException();// 数组越界异常 -> 下标超出数组范围
        // throw new IllegalArgumentException();// 非法参数异常
        // throw new NumberFormatException();// 数字转换异常 -> 将字符串类型转换为数字类型
        // throw new ArithmeticException();// 算数异常 -> 计算时产生的异常
        // throw new ParseException();// 解析异常 -> 日期等解析方法
        // throw new OutOfMemoryError();// 内存溢出异常 -> 死循环造成的资源不足
3.自定义输出异常信息
        try {
            test1();
        } catch (Exception e) {
            // TODO: handle exception
            System.out.println(e.getMessage());
        }
public static void test1() throws ArithmeticException {
    // 自定义输出的异常信息
        throw new ArithmeticException("除数不能为0");
    }

集合

1.java中的集合
// TODO Java中的集合
        // Collection -> List/Set -> ArrayList,LinkedList,HashSet,TreeSet,Vector
        // Map -> HashMap,HashTable,TreeMap
        // 1.实例化ArrayList - 无元素类型的限制(Object[])
        List list = new ArrayList();
        // 2.向集合当中添加元素
        list.add("1");
        list.add(2);
        list.add(3.0);
        list.add(3.0);
        // list.add(new Student());
        // 3.获取数组中的元素
        // System.out.println(list.get(0));
        // System.out.println(list.get(1));
        // System.out.println(list.get(2));
        // System.out.println(((Student)list.get(3)).getName());
        // 4.无元素类型限制 - 优点:可以装不同类型的元素/缺点:不利于自定义类型(引用类型)元素的操作
        // 5.集合的遍历
        for(int i = 0;i < list.size();i ++) {
            System.out.println(list.get(i));
        }
        // 6.foreach遍历 - 基于迭代器的实现,避免在foreach中变动集合中的元素
        for (Object object : list) {
            System.out.println(object);
        }
        System.out.println(list.size());
2.add
// TODO ArrayList -> add插入方法
        List list = new ArrayList();
        list.add("1");
        list.add(2);
        list.add(3.0);
        list.add(3.0);
        // add(int index,E element)插入
        // 数组越界,能够取到的下标以当前的集合中的元素个数为准 list.size()
        list.add(3,5);
        System.out.println(list.get(3));
3.ArrayList
// TODO ArrayList -> 
        List list1 = new ArrayList();
        list1.add("1");
        list1.add(2);
        list1.add(3.0);
        List list2 = new ArrayList();
        list2.add("4");
        list2.add(5);
        list2.add(6.0);
        // 将某一个集合追加到尾部
        list1.addAll(list2);
        /*for (Object object : list1) {
            System.out.println(object);
        }*/
        // 从某一个位置插入整个集合的所有元素,原集合的元素不会丢失
        list1.addAll(1, list2);
        for (Object object : list1) {
            System.out.println(object);
        }
  • contains,isEmpty,remove,toArray
// TODO ArrayList -> 是否包含,是否为空,删除元素
        List list1 = new ArrayList();
        list1.add("1");
        list1.add(2);
        list1.add(3.0);
        // 底层是equals方法 -> 基本数据类型及字符串都能够查找成功
        System.out.println(list1.contains("1"));
        // 集合为空时返回true
        System.out.println(list1.isEmpty());
        // 删除元素,删除成功返回true,删除失败返回false
        System.out.println(list1.remove("1"));
        System.out.println(list1.remove("2"));
// TODO ArrayList -> toArray
        List list1 = new ArrayList();
        list1.add("1");
        list1.add(2);
        list1.add(3.0);
        // 将ArrayList转换为对应类型的数组
        Object[] objects = list1.toArray();
        for (int i = 0; i < objects.length; i++) {
            System.out.println(objects[i]);
        }

转载于:https://www.cnblogs.com/yokii/p/9400161.html

[ 70.784694] ---------------------------------------------------------------------- [ 70.792242] Modules linked in: nvt_sen_sc01g(O) pri_tpm(PO) xr_usbs(O) 8188eu(O) cfg80211(O) gps(PO) pe_pm(PO) qmi_wwan(O) option(O) usb_wwan(O) usbserial(O) cryptodev(O) cmemdrv(PO) alarm(PO) motor(PO) traffi(PO) uart(PO) fpga(PO) looktty(PO) extchip(PO) timer(PO) hikcomm(PO) pricrypto(PO) bd(PO) base(O) kflow_ai(O) kdrv_ai(O) kdrv_md(O) kdrv_ive(O) nvt_dsp(O) nvt_ipc(O) nvt_sde(O) nvt_vpe(O) nvt_iq(PO) nvt_isp(O) kdrv_sde(O) kflow_audiodec(O) kflow_audioenc(O) kflow_audioout(O) kflow_audiocap(O) nvt_kdrv_audio(O) nvt_audio(O) kflow_videodec(O) kflow_videoenc(O) h26xdec(O) kdrv_jpgdec(O) kdrv_jpg(O) nvt_vencrc(O) kdrv_h26x(O) kflow_videoout(O) nvt_hdmitx(O) kdrv_videoout(O) nvt_dsi(O) nvt_dsiphy(O) nvt_mi(O) nvt_ide(O) nvt_gfx(O) kdrv_rpc(O) kflow_videoprocess(O) kflow_videocapture(O) nvt_videosprite(O) kflow_common(O) kdrv_videoprocess(O) kdrv_videocapture(O) kdrv_dre(O) kdrv_vpe(O) kdrv_gfx2d(O) kdrv_comm(O) nvt_hwcpy kdrv_builtin(O) kwrap(O) [ 70.875942] CPU: 0 PID: 3550 Comm: timeSwitching Tainted: P O 5.10.168 #1 [01-08 09:53:25.379][HW_IF][motor_op.c 69]bsp_api_motor_icr_da[ 70.884010] Hardware name: N10 (DT) [ 70.893028] pstate: 60000005 (nZCv daif -PAN -UAO -TCO BTYPE=--) [ 70.899021] pc : day_ircut+0x30/0x13c [motor] [ 70.903364] lr : motor_ioctl+0x4d0/0x1070 [motor] [ 70.908051] sp : ffffffc014b83ab0 [ 70.911352] x29: ffffffc014b83ab0 x28: ffffff80347dc100 [ 70.916649] x27: 0000000000000000 x26: 0000000000000000 [ 70.921945] x25: 0000000000000000 x24: 0000000000000000 [ 70.927241] x23: 0000000000000000 x22: ffffffc009639000 [ 70.932537] x21: ffffff8002317200 x20: 0000000000000448 [ 70.937834] x19: 0000000000000000 x18: 0000000000000000 [ 70.943130] x17: 0000000000000000 x16: 0000000000000000 [ 70.948426] x15: 0000000000000000 x14: 0000000000000000 [ 70.953722] x13: 0000000000000000 x12: 0000000000000000 [ 70.959018] x11:
03-18
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值