匿名内部类
匿名表达式定义
匿名表达式是实现不用额外创建一个不被经常使用的类,提高运行效率
案例
public static void main(String[] args) {
Swimming swimming = new Swimming() {
// 匿名内部类1
@Override
public void swim()
{
System.out.println("游泳吧");
}
};
goswiming(swimming);
// 匿名内部类2
goswiming(new Swimming() {
@Override
public void swim() {
System.out.println("好兄弟一起去游泳");
}
});
}
public static void goswiming(Swimming swimming)
{
swimming.swim();
}
public static void main(String[] args) {
// 创建窗口
JWindow win = new JWindow();
// 创建桌面
JPanel jPanel = new JPanel();
// 将桌布放到窗口里面
win.add(jPanel);
// 创建一个按钮
JButton jButton = new JButton("点我给钱");
// 获取事件
jButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(win,"给钱!!!!");
}
});
win.add(jButton);
win.setSize(300,300);//给窗口设置宽和高
win.setLocationRelativeTo(null);//居中显示
win.setVisible(true);//显示窗口
}
Lambda表达式
Lambda概述
Lambda表达式是JDK 8开始后的一种新语法形式。
Lambda格式
(匿名内部类被重写方法的形参列表) -> { 被重写方法的方法体代码。}
注:-> 是语法形式,无实际含义
注意:Lambda表达式只能简化函数式接口的匿名内部类的写法形式
Lambda的省略写法
参数类型可以省略不写。
如果只有一个参数,参数类型可以省略,同时()也可以省略。
如果Lambda表达式的方法体代码只有一行代码。可以省略大括号不写,同时要省略分号!
如果Lambda表达式的方法体代码只有一行代码。可以省略大括号不写。此时,如果这行代码是return语句,必须省略return不写,同时也必须省略";"不写
案例
public static void main(String[] args) {
// lambda格式1
Swimm swimming = () -> {
System.out.println("你在游泳");
};
goswiming(swimming);
// lambda格式2
goswiming(()->{
System.out.println("谁在游泳");
});
}
public static void goswiming (Swimm swimming)
{
swimming.swim();
}
/*
1.参数类型可以省略不写。
2.如果只有一个参数,参数类型可以省略,同时()也可以省略。
3.如果Lambda表达式的方法体代码只有一行代码。可以省略大括号不写,同时要省略分号!
4.如果Lambda表达式的方法体代码只有一行代码。可以省略大括号不写。此时,如果这行代码是return语句,必须省略return不写,
同时也必须省略";"不写
* */
public static void main(String[] args) {
//未使用Lambda表达式
Integer[] ages={19,13,18,16,20,22};
Arrays.sort(ages, new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return o2-o1;//降序
}
});
//第一次
Integer[] ages1={19,13,18,16,20,22};
Arrays.sort(ages, (Integer o1, Integer o2)-> {
return o2-o1;});//降序
//第二次
Integer[] ages2={19,13,18,16,20,22};
Arrays.sort(ages, (o1, o2)-> o2-o1 );
//降序
System.out.println("=================================================================");
//1创建一个窗口对象
JFrame win=new JFrame("窗口展示");
//给窗口设置桌面
JPanel p=new JPanel();
win.add(p);
//2创建一个按钮对象
JButton but=new JButton("点我给钱");
//第一次未使用lambda表达式
but.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(win,"给钱!!!!");
}
});
//第一次Lambda表达式简写
but.addActionListener( e-> {JOptionPane.showMessageDialog(win,"给钱!!!!");});
//第二此lambda报答是简写
but.addActionListener( e-> JOptionPane.showMessageDialog(win,"给钱!!!!"));
//3把按钮添加到窗口里面
win.add(but);
win.setSize(300,300);//给窗口设置宽和高
win.setLocationRelativeTo(null);//居中显示
win.setVisible(true);//显示窗口
}