JDK1.8 最全特性
1. Lamdba表达式
Lambda表达式是什么?
Lambda是一个匿名函数,我们可以将Lambda表达式理解为一段可以传递的代码(将代码像数据一样传递)。使用它可以写出简洁、灵活的代码。作为一种更紧凑的代码风格,使java语言表达能力得到提升。
public static void main(String[] args) {
//使用匿名函数
new Thread(new Runnable(){
@Override
public void run(){
System.out.println("我是没有使用Lambda表达式:不简洁");
}
}).start();
//使用Lambda表达式
new Thread(
()->System.out.println("我是使用Lambda表达式:简洁、灵活")
).start();
}
Lambda表达式在java语言中引入了一种新的语法元素和操作。这种操作符号为“->”,Lambda操作符或箭头操作符,它将Lambda表达式分割为两部分。 左边:指Lambda表达式的所有参数 右边:指Lambda体,即表示Lambda表达式需要执行的功能
六种语法格式 :
- 语法格式一:无参数、无返回值,只需要一个Lambda体
public interface Lock {
public abstract void lockUp(); //上锁
}
public static void main(String[] args) {
Lock lock = ()-> System.out.println("Lambda表达式:简洁、灵活,优雅永不过时");
lock.lockUp();
}
-
语法格式二:lambda有一个参数、无返回值
public interface Lock { public abstract void lockUp(String str); //上锁 } public static void main(String[] args) { Lock lock = (s) -> System.out.println(s+"上锁"); lock.lockUp("张三"); }
-
Lambda只有一个参数时,可以省略()
public interface Lock { public abstract void lockUp(String str); //上锁 } public static void main(String[] args) { Lock lock = s -> System.out.println(s+"上锁"); lock.lockUp("张三"); }
-
语法格式四:Lambda有两个参数时,并且有返回值
public interface Lock { public abstract String lockUp(String str,String str2); //上锁 } Lock lock = (s1,s2) -> { System.out.println("门被上锁。。。。。。"); return "上锁"; }; lock.lockUp("张三","李四");
-
语法格式五:当Lambda体只有一条语句的时候,return和{}可以省略掉
public interface Lock { public abstract String lockUp(String str,String str2); //上锁 } Lock lock = (s1,s2) -> "上锁"; lock.lockUp("张三","李四");
-
类型推断:数据类型可以省略,因为编译器可以推断得出,称为“类型推断”
public interface Lock { public abstract void lockUp(String str); //上锁 } public static void main(String[] args) { //可以写类型 Lock lock = (String s) -> System.out.println(s+"上锁"); lock.lockUp("张三"); //可以不写类型 Lock lock