zoukankan      html  css  js  c++  java
  • 014.day14

    枚举

    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() + "	"); //A B C D E
    			// 返回枚举常量的序数(它在枚举声明中的位置,其中初始常量序数为零)。
    			System.out.print(score.ordinal() + "	");// 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]);
    		}
    
  • 相关阅读:
    详细描述一下 Elasticsearch 索引文档的过程 ?
    elasticsearch 索引数据多了怎么办,如何调优,部署 ?
    elasticsearch 了解多少,说说你们公司 es 的集群架构,索 引数据大小,分片有多少,以及一些调优手段 ?
    Dubbo 和 Dubbox 之间的区别?
    Dubbo 支持服务降级吗?
    Pipeline 有什么好处,为什么要用 pipeline?
    为什么redis 需要把所有数据放到内存中?
    你对线程优先级的理解是什么?
    在 java 中 wait 和 sleep 方法的不同?
    一个线程运行时发生异常会怎样?
  • 原文地址:https://www.cnblogs.com/yokii/p/9400161.html
Copyright © 2011-2022 走看看