函数式与命令式编程的区别:
命令式编程关注的是怎么做,函数式编程关注的是做什么(由系统选择如何实现),
命令式编程:特点是它的指令和计算机底层的词汇非相近
示例:
命令式编程:
//取最大值
List<Integer> list = Arrays.asList(1, 2, 4, 6);
Integer max = list.get(0);
for (Integer value : list.subList(1, list.size())) {
if (value > max) {
max = value;
}
}
函数式编程实现:
int max1 = list.stream().reduce(0, Integer::max);
Optional<Integer> max2 = list.stream().max(comparing(Integer::intValue));
函数式编程注意事项
1、无副作用
指所有功能返回一个新的值,没有其它行为,不得修改外部变更的值。
2、不变性
只能修改本地变更,除此之外,它引用的对象应该是不可修改的对象。(final类型)
int portNumber = 1337;
Runnable r = () -> System.out.println( portNumber);
portNumber = 31337; //但局部变量必须显式声明为final,或事实上是final。
网友评论