java8新特性

一.内部类

java内部类总结:

https://segmentfault.com/a/1190000013386064

内部类演示:

public class Demo{
    
    private String str = "外部类中的字符串";
    
    static class Inner{
        private String inStr = "内部类中的字符串";
        public void print() {
            // 静态内部类无法调用 ,非静态的外部参数。
            //System.out.println(str);
            System.out.println("内部类打印");
        }
    }
    
    // 
    public void fun() {
        // 在外部类 创建内部类对象
        Inner i = new Inner();
        i.print();
    }
    
}

匿名内部类:

public static void test() {
        // 内部类,1---n的累加
        class XXx{
            public void sum(int n) {
                int count = 0;
                for (int i = 1; i <= n; i++) {
                    count = count + i;
                    System.out.println(count);
                }
            }
        }
        XXx x = new XXx();
        x.sum(100);
    }

lambda表达式:

把代码变的更加简单。可读性比较差。 scala( spark ).

1、简化匿名内部类的编写。

2、直接实现接口中的函数。

3、函数名 (参数列表)

4、函数实现用"->" 表示实现。{}表示实现的具体逻辑。

5、用接口去声明使用。

6、用声明的变量调用实现 的方法。
例如:
没有参数,直接返回。这样的函数 () -> 6; 参数列表 -> 语句块;

//实现外部接口
interface B{
    void b(String str);
}

// 5、接收字符串对象,并在控制台打印。
        new B() {
            public void b(String s) {
                System.out.println(s);
            }
        }.b("hello");

可以简写为:
两种写法:

        // () -> {}; 等于   () -> o;
        B b5 = (String str) -> {System.out.println(str);};
        B b5_1 = (s) -> System.out.println(s);
        b5.b("moring");
        b5_1.b("hello");

方法的引用:

::,使代码更加紧凑简洁。

List list = new ArrayList();
        list.add("a");
        list.add("b");
        //list.forEach((String b) -> System.out.print(b));
        //list.forEach(e -> System.out.println(e));
        //简写为下面一种方法
        // 方法引用
        list.forEach(System.out::println);

java8流式操作stream:

https://segmentfault.com/a/1190000020266327

你可能感兴趣的:(java)