jdk1.8新特性(Lambda表达式)

只具有一个方法的普通接口可以被转换为Lambda表达式。

语法:{参数1,参数2...}->{...}

(1)没有参数时使用Lambda表达式    ()->{...}

(2)带参数时使用Lambda表达式       (int a)->{...}

(3)代码中只一句代码使用Lambda表达式   ()->System.out.println(a);

(4)代码中有多句代码时使用Lambda表达式  (int a,int b)->{System.out.println(a);System.out.println(a*b);}

(5)有返回值的代码块      (int a,int b)->{System.out.println(a);System.out.println(a*b); return a;}

(6)参数中使用final关键字    (final String a)->System.out.println(a);

demo如下:

public class tet {
public static void main(String[] args){
//System.out.println(4&10);//相当于10%(4+1)

//代码中只一句代码使用Lambda表达式
/* IEat iEat3 = ()-> System.out.println("代码中只一句代码使用Lambda表达式");
iEat3.eat();*/

//没有参数时使用Lambda表达式
/* IEat iEat3 = ()-> {System.out.println("没有参数时使用Lambda表达式 ");};
iEat3.eat();*/

//带参数时使用Lambda表达式
/* IEat iEat3 = (int a)-> {System.out.println("带参数时使用Lambda表达式 "+a);};
iEat3.eat(5);*/

//代码中有多句代码时使用Lambda表达式
/*IEat iEat3 = (int a)-> {System.out.println("代码中有多句代码时使用Lambda表达式"+a);System.out.println("代码中有多句代码时使用Lambda表达式"+a);};
iEat3.eat(5);*/

//有返回值的代码块
/* IEat iEat3 = (int a)-> {System.out.println("有返回值的代码块"+a); return a;};
iEat3.eat(5);*/

//参数中使用final关键字
/* IEat iEat3 = (final int a)-> {System.out.println("参数中使用final关键字"+a); return a;};
iEat3.eat(5);*/

Student[] students = {
new Student("张三",15),
new Student("张似",10),
new Student("张无",18)

};
/*
     //此处涉及对象排序知识点
     Arrays.sort(students, new Comparator<Student>() {
@Override
public int compare(Student o1, Student o2) {
return o1.getAge()-o2.getAge()
}
});*/
Arrays.sort(students,(o1,o2)->o1.getAge()-o2.getAge());
System.out.println(Arrays.toString(students));
}

interface IEat{
public int eat(final int a);
}

class IEatImpl implements IEat{
public int eat(final int a){
System.out.println("eat bnana");
//System.out.println("eat apple");
return a;
}
}
}
原文地址:https://www.cnblogs.com/wenbiquan/p/11069669.html