静态方法和成员方法
定义方法的时候,有static和没有ststic有什么区别?
有static的方法,叫做静态方法。
没有static的方法,叫做成员方法。(实例方法)
定义静态方法的格式:
public 返回值类型 方法名称(参数类型 参数名称){
//方法体
}
调用静态方法的格式:
方法名(参数值); //直接调用本类当中的静态方法
类名称.方法名(参数值) //调用另外一个类当中的静态方法
调用成员方法的格式:
类名称 对象名 = new 类名称(); //首先创建对象
对象名.成员方法名(参数值); //通过对象名调用成员方法
1.如果不创建对象,那么通过类名称只能调用静态方法
2.如果创建了对象,那么通过对象名可以调用成员方法
3.通过对象也可以调用静态方法,然而不推荐这么做
如果Lambda表达式需要做的事情,在另外一个类当中已经做过了,那么就可以直接拿过来替换Lambda。
方法引用的写法:
通过类名称引用静态方法,格式:
类名称:: 静态方法名
方法引用的又一种格式:
通过对象引用成员方法,格式:
对象名::成员方法名
扩展:
System.out其实就是一个JDK当中已经创建好的对象,而println就是System.out对象当中的成员方法
对象名::成员方法名
System.out::println
小节:
1.一定要有函数式接口,才能使用Lambda
2.对于重复的Lamdba场景,可以使用方法引用来进行简化
Java 8 当中的”流“ 其实就是Stream接口的对象。
JDK提供了一个流接口:java.util.stream.Stream
如何获取流?
1.根据集合获取流:集合名称.stream()
2.根据数组获取流:Stream.of(数组名称)
获取流之后,可以使用映射方法:map(用于转换的Lambda表达式)
映射:就是将一个对象转换成为另一个对象,把老对象映射到新对象上。
”赵xx,98“ 转换成为 ”98“ 将一个长字符串转换成为一个短字符串
”98“ 转换成为 98
如果希望对流当中的元素进行过滤,可以使用过滤方法:
filter(能产生boolean结果的lambda):如果参数Lambda产生了true,则要元素:如果产生了false,则不要元素。
如果希望在流当中进行元素的遍历操作,可以使用foreach方法。
forEach(Lambda表达式):意思是,对流当中的每一个元素都要进行操作。
参数Lambda表达式必须是一个能够消费一个参数,而且不产生数据结果的Lambda
例如:
Lambda: s-> System.out.println(s);
方法引用: System::println
如何才能获取“并发流”(支持并发操作的流)
.parallelStream
注意事项:
1.使用并发流操作的时候,到底有几个人进行同时操作呢?不用管,JDK会自己处理。
2.只要正确使用,就不会出现多个人抢到同一个元素的情况。
3.如果已经获取了一个普通的流,那么只要再调用一下parallel()方法也会变成并发流。
总结:
1.直接获取并发流.parallelstream()
2.已经获取了普通流,然后升级成为并发流:.stream().parallel()