1、静态方法与成员方法
有static的方法叫静态方法,没有static的方法叫成员方法(实例方法)
定义静态方法的格式:public static 返回值类型 方法名 (参数类型 参数名) { 方法体 }
调用静态方法的格式:本类中:方法名(参数值);
他类中:类名称.方法名(参数值);//本类当中也可以使用该方法
定义成员方法的格式:public 返回值类型 方法名 (参数类型 参数名) { 方法体 }
调用成员方法的格式:类名称 对象名 = new 类名称();对象名.成员方法(参数值);
在不同类中调用静态方法:方法名(参数值);
在不同类中调用成员方法:首先要创建一个对象:类名称 对象名 = new 类名称(参数值);
对象名.成员方法名();
对于静态方法调用时也可以使用以上方法,但是不建议使用
调用静态方法的时候可以不创建对象,调用成员方法的时候需要创建对象
2、方法引用(取代λ)(方法引用的返回值类型要与接口定义的抽象方法的返回值类型相同)
(1)通过类名称引用静态方法:格式:类名称::静态方法名
例:Math::abs //作用为取反,返回值类型位int
(2)通过对象名引用成员方法:格式:对象名::成员方法
例:System.out::println //作用为打印输出,返回值类型位void
注意:一定要有函数式接口,才能使用方法引用;对于重复的λ场景,可以使用方法引用来进行简化
3、stream流(注意导包:java.util.stream.Stream)
Java8当中的流是指Stream接口的对象,JDk提供了一个Stream流接口:java.util.stream.Stream<T> //T表示泛型
<1>获取流的方法:
(1)根据集合获取流:集合名.stream();
(2)根据数组获取流:stream.of(数组名);
<2>stream流的map映射方法:获取流之后使用map映射方法用于转化lambda表达式,实质就是将一个对象转换成另一个对象,将就对象映射到新的对象上 .map(表达式)
<3>Stream流的filter过滤方法:产生boolean结果的表达式,用lambda(函数式接口)作为参数,如果产生true则取用元素,如果产生false则不取用该元素 .filter(表达式)
<4>forEach遍历方法:对流当中的每一个元素进行操作,参数λ必须是能够消费一个参数(使用参数),而不产生数据结果的Lambda(没有返回值)。 .forEach(表达式)
4、sream.parallel并发流
并发流的作用:将任务分给多个人干,而不是单一的stream流逐一处理
获取并发流的方式:.stream().parallel() && .parallelstream()
注意事项:(1)使用并发流操作的时候,多少人执行该操作,有JDK控制
(2)如果正确使用,则不会存在一个人抢到多个元素的情况
(3)如果已经获取一个普通流,则可以使用.stream().parallel()获得并发流
5、模块化
将整体零散的被打乱称为若干个模块,即为模块化
java9当中加入对一个模块中若干对象的权限控制
java8中存在的问题:(1)rt.jar中的大多是class文件缀余,基本无使用(2)对于自定义的类子可以使用,其他人也可以使用,没有对使用者的权限控制
java9解决问题:将rt.jar模块化,变为java.base.jmod,体积缩小,将无用class文件为加进去。对于使用者加入权限控制,只允许有权限的人去使用
文件module-info.java:存放描述模块信息
格式:
module 本模块名称 { //模块名称建议完全英文小写加.的写法
exports 对外暴露的包路径
requires 需要依赖的其他模块名称 //只有java.base不用加入,jdk已经包含进去
}
将工程文件转化为模块文件:工程名右键-->configure-->Create module-info.java-->输入模块名称-->产生相应的模块存放于src下面
使用其他模块时,需要导包,需要加入对模块的依赖(格式:requires 模块名),然后右键-->Build Path-->Configure Build Path-->project-->Modulepath-->选择需要使用的模块并关闭(对于eclipse中的操作)