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;
}
}
}