一:函数式编程:

函数式与命令式编程的区别:

命令式编程关注的是怎么做,函数式编程关注的是做什么(由系统选择如何实现),
命令式编程:特点是它的指令和计算机底层的词汇非相近

示例:

命令式编程:

//取最大值
        List 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 max2 = list.stream().max(comparing(Integer::intValue));

函数式编程注意事项

1、无副作用
指所有功能返回一个新的值,没有其它行为,不得修改外部变更的值。
2、不变性
只能修改本地变更,除此之外,它引用的对象应该是不可修改的对象。(final类型)

int portNumber = 1337; 
Runnable r = () -> System.out.println( portNumber);
portNumber = 31337; //但局部变量必须显式声明为final,或事实上是final。

Java 到底是值传递还是引用传递? - 知乎

你可能感兴趣的:(一:函数式编程:)