package com.itheima.demo10_lambda;
/**
目标:Lambda表达式的概述。(函数式编程体系)
什么是Lambda表达式?
Lambda表达式是JDK1.8开始之后的新技术,是一种代码的新语法。
是一种特殊写法,
作用:“核心目的是为了简化匿名内部类的代码写法”。
Lambda表达式的格式:
(匿名内部类被重写方法的形参列表) -> {
被重写方法的方法体代码。
}
-> 就是一个新语法,没有实际含义,但是不能省略!
Lambda表达式的使用前提:
(1)Lambda表达式并不能简化所有匿名内部类的写法。
(2)Lambda表达式只能简化接口中只有一个抽象方法的匿名内部类形式。
Lambda表达式只能简化函数式接口的匿名内部类写法:
a.首先必须是接口。
b.接口中只能有一个抽象方法。
小结:
Lambda表达式是简化匿名内部类的写法,但是只能简化函数式接口。
*/
public class LambdaDemo01 {
public static void main(String[] args) {
Animal cat = new Animal() {
@Override
public void run() {
System.out.println("跑的很快~~~");
}
};
// Animal c = () -> {
// System.out.println("跑的很快~~~");
// };
cat.run();
}
}
abstract class Animal{
public abstract void run();
}
package com.itheima.demo10_lambda;
/**
目标:Lambda表达式的概述。(函数式编程体系)
什么是Lambda表达式?
Lambda表达式是JDK1.8开始之后的新技术,是一种代码的新语法。
是一种特殊写法,
作用:“核心目的是为了简化匿名内部类的代码写法”。
Lambda表达式的格式:
(匿名内部类被重写方法的形参列表) -> {
被重写方法的方法体代码。
}
-> 就是一个新语法,没有实际含义,但是不能省略!
Lambda表达式的使用前提:
(1)Lambda表达式并不能简化所有匿名内部类的写法。
(2)Lambda表达式只能简化接口中只有一个抽象方法的匿名内部类形式。
Lambda表达式只能简化函数式接口的匿名内部类写法:
a.首先必须是接口。
b.接口中只能有一个抽象方法。
Lambda表达式的省略写法(进一步在Lambda表达式的基础上继续简化)
参数类型可以省略不写。
如果只有一个参数,参数类型可以省略,同时()也可以省略。
如果Lambda表达式的方法体代码只有一行代码。可以省略大括号不写,同时要省略分号!
如果Lambda表达式的方法体代码只有一行代码。可以省略大括号不写。
此时,如果这行代码是return语句,必须省略return不写,同时也必须省略";"不写
小结:
Lambda表达式是简化匿名内部类的写法,但是只能简化函数式接口。
*/
public class LambdaDemo02 {
public static void main(String[] args) {
// Swimming boZai = new Swimming() {
// @Override
// public void swim() {
// System.out.println("游泳很快~~~");
// }
// };
// boZai.swim();
Swimming boZai1 = () -> {
System.out.println("游泳很快~~~");
};
boZai1.swim();
Swimming boZai2 = () -> System.out.println("游泳很快~~~");
boZai2.swim();
}
}
@FunctionalInterface // 函数式接口,必须是接口,只能一个抽象方法
interface Swimming{
void swim();
}
package com.itheima.demo10_lambda;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Arrays;
import java.util.Comparator;
public class LambdaDemo03 {
public static void main(String[] args) {
Integer[] ages = {10 , 40, 30, 20 , 100, 80};
Arrays.sort(ages, new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return o2 - o1;
}
});
Arrays.sort(ages, (Integer o1, Integer o2) -> {
return o2 - o1;
});
Arrays.sort(ages, ( o1, o2) -> {
return o2 - o1;
});
Arrays.sort(ages, ( o1, o2) -> o2 - o1 ); // 降序
Arrays.sort(ages, ( o1, o2) -> o1 - o2 ); // 升序
System.out.println(Arrays.toString(ages));
JFrame win = new JFrame("我是窗口");
JButton btn = new JButton("我是大按钮");
win.add(btn);
// btn.addActionListener(new ActionListener() {
// @Override
// public void actionPerformed(ActionEvent e) {
// JOptionPane.showConfirmDialog(win , "点击一下,你就蒙蔽!");
// }
// });
// btn.addActionListener((ActionEvent e) ->{
// JOptionPane.showConfirmDialog(win , "点击一下,你就蒙蔽!");
// });
//
// btn.addActionListener((e) ->{
// JOptionPane.showConfirmDialog(win , "点击一下,你就蒙蔽!");
// });
//
// btn.addActionListener(e ->{
// JOptionPane.showConfirmDialog(win , "点击一下,你就蒙蔽!");
// });
btn.addActionListener(e -> JOptionPane.showConfirmDialog(win , "点击一下,你就蒙蔽!"));
win.setSize(300, 300);
win.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
win.setLocationRelativeTo(null);
win.setVisible(true);
}
}