JavaLambda表达式-创新互联

Java Lambda表达式

Lambda表达式,也可以称为闭包,它时推动Java8发布的最重要新特性。

从策划到设计制作,每一步都追求做到细腻,制作可持续发展的企业网站。为客户提供成都网站建设、成都网站设计、网站策划、网页设计、域名申请、网络空间、网络营销、VI设计、 网站改版、漏洞修补等服务。为客户提供更好的一站式互联网解决方案,以客户的口碑塑造优易品牌,携手广大客户,共同发展进步。

Lambda运行把函数作为一个方法的参数,使代码变得更加简介紧凑。

1.Lambda表达式格式:

​ ->:Lambda操作符

​ 左边是Lambda形参列表,也就是接口中抽象方法的形参列表。

​ 右边是Lambda体,也就是重写的抽象方法的方法体。

2.Lambda表达式的使用形式有6种 2.1语法格式一:无参,无返回值
@Test
public void test0(){Runnable r1 = new Runnable() {@Override
        public void run() {System.out.println("I love you.");
        }
    };
    r1.run();
    System.out.println("*****************");
    Runnable r2 = () ->System.out.println("I love yy.");//Lambda表达式
    r2.run();
}
2.2语法格式二:Lambda需要一个参数,但没有返回值
@Test
public void test2(){Consumercon = new Consumer() {@Override
        public void accept(String s) {System.out.println(s);
        }
    };
    con.accept("I love you not because of who you are, but because of who I am when I am with you.");
    System.out.println("****************");
    Consumercon1 = (String s) ->{System.out.println(s);
    };
    con1.accept("Just because someone doesn't love you the way you want them to, doesn't mean they don't love you with all they have.");

}
2.3语法格式三:数据类型可以省略,因为可由编译器推断得出(类型推断,泛型的时候也是如此)
@Test
public void test3(){Consumercon = new Consumer() {@Override
        public void accept(String s) {System.out.println(s);
        }
    };
    con.accept("No man is worth your tears, and the one who is won't make you cry.");
    System.out.println("****************");
    Consumercon1 = (s) ->{System.out.println(s);
    };
    con1.accept("Never frown, even when you are sad.");

}
2.4语法格式四:Lambda若自需要一个参数时,参数的小括号可以省略
@Test
public void test4(){Consumercon = new Consumer() {@Override
        public void accept(String s) {System.out.println(s);
        }
    };
    con.accept("Don't cry because it is over.");
    System.out.println("****************");
    Consumercon1 = s ->{System.out.println(s);
    };

    con1.accept("Smile because it happened, life is a pure flame, and i love you always.");

}
2.5语法格式五:Lambda需要两个或以上的参数,多条执行语句,并且可以有返回值
@Test
public void test1(){Comparatorcom1 = new Comparator() {@Override
        public int compare(Integer o1, Integer o2) {System.out.println(o1);
            System.out.println(o2);
            return o1.compareTo(o2);
        }
    };
    int compare1 = com1.compare(12,21);
    System.out.println(compare1);//-1

    System.out.println("****************");
    //lambda表达式
    Comparatorcom2 = (o1,o2)->{System.out.println(o1);
        System.out.println(o2);
        return o1.compareTo(o2);

    };
    int compare2 = com2.compare(32,21);
    System.out.println(compare2);//1

    //方法引用
    Comparatorcom3 = Integer ::compare;

    int compare3 = com3.compare(32,21);
    System.out.println(compare3);//1
}
2.6语法格式六:Lambda体只有一条执行语句时,return与大括号若有,都可以省略
@Test
public void test5(){Comparatorcom1 = new Comparator() {@Override
        public int compare(Integer o1, Integer o2) {return o1.compareTo(o2);
        }
    };
    int compare1 = com1.compare(12,21);
    System.out.println(compare1);//-1

    System.out.println("****************");
    //lambda表达式
    Comparatorcom2 = (o1,o2)->o1.compareTo(o2);

    int compare2 = com2.compare(32,21);
    System.out.println(compare2);//1

}
2.7Lambda表达式总结:

->左边:lambda 形参列表的参数类型可以省略(类型推断):如果lambda形参列表只有一个参数,可以省略小

括号。

->右边:lambda 体应该使用一对{}包裹,如果lambda只有一条执行语句,包含return语句,可以省略大括号。

3.Lambda表达式的本质:作为接口的实例,该接口应当为函数式接口(FunctionalInterface),只有一种抽象方法。

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


文章标题:JavaLambda表达式-创新互联
当前地址:http://myzitong.com/article/ihhcg.html