Day11
可变参数
- 方法定义时,不指定参数的具体个数
- 传入后,这些数据以数组的形式存储
- 格式:
public void hi(int...arr)
arr
是数组名,表示传入多个int类型的数据- 一个方法最多一个可变参数
- 可变参数必须写在形参最后
Stream流
- 一条存放数据的流水线
- 用于简化集合、数组的操作
- 步骤
- 将数据放入Stream流
- 将Stream流上的数据进行过滤、转换
- 最后对Stream流上的元素统计、打印
- Stream流的获取方法
- 先创建一个单列集合
list
Stream<String> st = list.stream()
- 双列集合使用
map.keySet()
转换为单列集合再获得Stream流 - 数组使用
Arrays.stream(arr)
- 先创建一个单列集合
- Stream的中间方法
- 过滤
filter
- 使用lambda表达式返回boolean值,true的数据接受,其它过滤掉
- 保留前几个
limit
- 接受一个值,返回一个只有前几个的流
- 跳过
skip
- 接受一个值,返回一个缺少前几个的流
- 元素去重
distinct()
- 返回一个没有重复元素的流
- 将两个流合并
concat
- 静态方法,接受两个不同的流
- 类型转换
map
- 使用lambda表达式,返回将流中元素类型转换的代码
- 过滤
- Stream流的终结方法
- 遍历:
forEach()
- 计数:
count()
,返回流中数据的个数 - 收集数据放入数组:
toArray()
- 参数的作用:创建数组
- lambda表达式中,参数是数组的长度,`value -> new String[value];
- 收集方法
collect
- 参数是:
Collectors.toList()/toSet)()
- 收集map:
Colletors.toMap()
第一个匿名内部类是将键的类型转换,一个参数是当前类型,返回目标类型
- 参数是:
- 遍历:
方法引用
- 使用已经写好的方法,传入需要函数式接口的地方
- 新方法的形参和返回值需要和函数式接口中的方法保持一致
- 方法引用的分类
- 引用静态方法
- 格式:类名::静态方法名
- 引用成员方法
- 其他类:对象(new 类名())::方法名
- 本类:this::方法名
- 父类:super::方法名
- 引用构造方法
- 格式:类名::new
- 引用静态方法
异常
- Exception:代表程序可能出现的问题
- RuntimeException:编译阶段不会出现异常提醒,运行时出现的异常(例如数组索引越界)
- 编译时异常:在编译阶段出现异常提醒
- 异常的作用
- 用来查询bug的关键参考信息
- 异常可以作为方法内部的一种特殊返回值
- 异常的处理方式
- JVM默认方式
- 将异常原因和出现位置在控制台用红色字体打印
- 程序终止在异常出现位置
- 自己处理异常
-
格式
try { 可能出现异常的代码 } catch(异常类名 变量名) { 异常的处理代码 }
-
目的:当代码出现异常时,可以让程序继续执行
-
若try中没有遇到问题则执行原来的代码
-
若try中一旦遇到问题,就不会再执行正确的语句
-
如果异常没有被捕获,依旧会使用JVM默认处理过程
-
处理异常的方法
e.printStackTrace()
打印异常信息,但是不终止程序e.toString()
将异常信息转换为字符串
-
抛出异常
- 关键字:throws
- 定义在方法处,表示本方法可能会有什么异常
- 关键字:throw
- 创建一个异常并且抛出,结束方法
- 关键字:throws
-
自定义异常
- 定义异常类
- 写继承关系
- 空参构造
- 带参构造
-
- JVM默认方式