当前位置: 首页 > wzjs >正文

某网站建设策划方案网络营销的内容有哪些方面

某网站建设策划方案,网络营销的内容有哪些方面,利用劫持的网站做seo,百度云域名要了解Lambda表达式,首先需要了解什么是函数式接口,函数式接口定义:一个接口有且只有一个抽象方法 。 一、函数式接口 1.FunctionalInterger 注意: 1. 如果一个接口只有一个抽象方法,那么该接口就是一个函数式接口 2. 如果我们…

要了解Lambda表达式,首先需要了解什么是函数式接口,函数式接口定义:一个接口有且只有一个抽象方法 。

一、函数式接口

1.@FunctionalInterger

注意:

1. 如果一个接口只有一个抽象方法,那么该接口就是一个函数式接口
2. 如果我们在某个接口上声明了 @FunctionalInterface 注解,那么编译器就会按照函数式接口的定义来要求该接口,这样如果有两个抽象方法,程序编译就会报错的。所以,从某种意义上来说,只要你保证你的接口中只 有一个抽象方法,你可以不加这个注解。加上就会自动进行检测的。

2.函数式接口的使用

//无返回值无参数
@FunctionalInterface
interface NoParameterNoReturn {//一般最主要使用void test();default void test2() {System.out.println("JDK1.8新特性,default默认方法可以有具体的实现");}static void test3() {System.out.println("静态方法也可以");}
}public class TestLambda {public static void main(String[] args) {//用接口接收一个匿名内部类NoParameterNoReturn noParameterNoReturn = new NoParameterNoReturn() {@Overridepublic void test() {System.out.println("无参的方法");}@Overridepublic void test2() {System.out.println("默认的方法重写了");}};//平时最常用的方式noParameterNoReturn.test();//默认方法也可以用匿名内部类重写noParameterNoReturn.test2();//通过类名调用NoParameterNoReturn.test3();}
}

 执行结果:

2.1 函数式接口的补充介绍

函数式接口中可以有以下几种方法,即便是被@FunctionalInterface修饰:

  1. 抽象方法
  2. 继承的方法
  3. 默认的方法
  4. 静态的方法
  5. 私有的方法
@FunctionalInterface
interface MyFunctionalInterface {//抽象方法void myAbstractMethod();//继承的方法,继承自Objectboolean equals(Object obj);default void defaultMethod() {System.out.println("这是默认方法");}static void staticMethod() {System.out.println("这是静态方法");}//虽然可以有,但是不能访问private void helperMethod() {System.out.println("这是私有方法");}}
class Test3 implements MyFunctionalInterface {@Overridepublic boolean equals(Object obj) {return super.equals(obj);}@Overridepublic void myAbstractMethod() {System.out.println("这是抽象方法");}
}public class TestLambda {public static void main(String[] args) {//重写抽象方法,并调用MyFunctionalInterface myFunctionalInterface = () -> System.out.println("这是抽象方法");myFunctionalInterface.myAbstractMethod();//调用默认方法myFunctionalInterface.defaultMethod();//用类名调用,静态方法MyFunctionalInterface.staticMethod();//需要创建类来实现,继承的方法Test3 test3 = new Test3();
//        test3.equals(……)}
}

二、Lambda的基本介绍

Lambda 表达式是 Java SE 8 中一个重要的新特性。L ambda 表达式允许你通过表达式来代替功能接口。  Lambda 表达式就和方法一样, 它提供了一个正常的参数列表和一个使用这些参数的主体 (body, 可以是一个表达式或一个代码块) Lambda 表达式( Lambda expression ,基于数学中的 λ 演算得名,也可称为闭包( Closure ) 。
1. Lambda 表达式的语法
基本语法 : (parameters) -> expression (parameters) ->{ statements; }
Lambda表达式由三部分组成:
1. paramaters 类似方法中的形参列表,这里的参数是函数式接口里的参数。 这里的参数类型可以明确的声明也可不声明而由JVM隐含的推断 。另外当只有 一个推断类型时可以省略掉圆括号。
2. -> :可理解为 被用于 的意思
3. 方法体 :可以是表达式也可以代码块,是函数式接口里方法的实现。代码块可返回一个值或者什么都不反回,这里的代码块块等同于方法的方法体。如果是表达式,也可以返回一个值或者什么都不反回。 如果只有返回什么一条语句,可以不写{} 和 return,他们只能一起不写。

// 1. 不需要参数,返回值为 2
() -> 2
// 2. 接收一个参数(数字类型),返回其2倍的值
x -> 2 * x
// 3. 接受2个参数(数字),并返回他们的和
(x, y) -> x + y
// 4. 接收2个int型整数,返回他们的乘积
(int x, int y) -> x * y
// 5. 接受一个 string 对象,并在控制台打印,不返回任何值(看起来像是返回void)
(String s) -> System.out.print(s)

三、Lambda的使用

1.无返回值情况

1.1 无参数

//无返回值无参数
@FunctionalInterface
interface NoParameterNoReturn {void test();
}public class TestLambda {public static void main(String[] args) {//用接口接收一个匿名内部类NoParameterNoReturn noParameterNoReturn = new NoParameterNoReturn() {@Overridepublic void test() {System.out.println("无参的方法");}};noParameterNoReturn.test();System.out.println("===下面用Lambda实现===");NoParameterNoReturn noParameterNoReturn1 = () -> System.out.println("无参的方法");//或者//NoParameterNoReturn noParameterNoReturn1 = () -> {System.out.println("无参的方法");};noParameterNoReturn1.test();}
}

 结果:

而且发现就连 new 接口类型 都被省略了,所以Lambda表达式其实非常抽象,而且使用Lambda的前提是要熟悉你用的函数式接口。

 1.2 一个参数

//无返回值一个参数
@FunctionalInterface
interface OneParameterNoReturn {void test(int a);
}public class TestLambda {public static void main(String[] args) {OneParameterNoReturn oneParameterNoReturn = new OneParameterNoReturn() {@Overridepublic void test(int a) {System.out.println(a);}};//调用oneParameterNoReturn.test(10);System.out.println("===下面用Lambda实现===");//                                         此时的参数名,可以随便取OneParameterNoReturn oneParameterNoReturn1 = k -> System.out.println(k);//或者
//        OneParameterNoReturn oneParameterNoReturn1 = (k) -> {System.out.println(k);};oneParameterNoReturn1.test(20);}
}

结果:

1.3 多参数情况

//无返回值多个参数
@FunctionalInterface
interface MoreParameterNoReturn {void test(int a,int b);
}public class TestLambda {public static void main(String[] args) {MoreParameterNoReturn moreParameterNoReturn = new MoreParameterNoReturn() {@Overridepublic void test(int a, int b) {System.out.println(a+b);}};moreParameterNoReturn.test(10,20);System.out.println("===下面用Lambda实现===");MoreParameterNoReturn moreParameterNoReturn1 = (a,b) -> System.out.println(a+b);//当参数是多个,那么()就不能省略了
//          MoreParameterNoReturn moreParameterNoReturn1 = a,b -> System.out.println(a+b);moreParameterNoReturn1.test(20, 30);}
}

结果:

2. 有返回值情况

//有返回值无参数
@FunctionalInterface
interface NoParameterReturn {int test();
}public class TestLambda {public static void main(String[] args) {NoParameterReturn noParameterReturn = new NoParameterReturn() {@Overridepublic int test() {return 200;}};System.out.println(noParameterReturn.test());System.out.println("===下面用Lambda实现===");NoParameterReturn noParameterReturn1 = () -> 500;//或者
//        NoParameterReturn noParameterReturn1 = () -> {return 500;};System.out.println(noParameterReturn1.test());}
}

结果:

2.1 无参数

//有返回值无参数
@FunctionalInterface
interface NoParameterReturn {int test();
}
public class TestLambda {public static void main(String[] args) {NoParameterReturn noParameterReturn = new NoParameterReturn() {@Overridepublic int test() {return 200;}};System.out.println(noParameterReturn.test());System.out.println("===下面用Lambda实现===");//        NoParameterReturn noParameterReturn1 = () -> 500;//      或者NoParameterReturn noParameterReturn1 = () -> {// 如果不只一条语句,就必须加上{}和returnSystem.out.println(500);return 500;};System.out.println(noParameterReturn1.test());}
}

2.2 一个参数

//有返回值一个参数
@FunctionalInterface
interface OneParameterReturn {int test(int a);
}
public class TestLambda {public static void main(String[] args) {OneParameterReturn oneParameterReturn = new OneParameterReturn() {@Overridepublic int test(int a) {return a;}};System.out.println(oneParameterReturn.test(100));System.out.println("===下面用Lambda实现===");OneParameterReturn oneParameterReturn1 = a -> {return a;};//或者
//        OneParameterReturn oneParameterReturn1 = a -> a;System.out.println(oneParameterReturn1.test(200));}
}

结果:

2.3 多参数

//有返回值多参数
@FunctionalInterface
interface MoreParameterReturn {int test(int a,int b);
}
public class TestLambda {public static void main(String[] args) {MoreParameterReturn moreParameterReturn = new MoreParameterReturn() {@Overridepublic int test(int a, int b) {return a + b;}};System.out.println(moreParameterReturn.test(10, 20));System.out.println("===下面用Lambda实现===");MoreParameterReturn moreParameterReturn1 = (a,b) -> {return a+b;};//或者
//        MoreParameterReturn moreParameterReturn1 = (a,b) -> a + b;System.out.println(moreParameterReturn1.test(20, 30));}
}

结果:

四、总结语法精简

1. 参数类型可以省略,如果需要省略,每个参数的类型都要省略。
2. 参数的小括号里面只有一个参数,那么小括号可以省略
3. 如果方法体当中只有一句代码,那么大括号可以省略
4. 如果方法体中只有一条语句,且是 return 语句,那么大括号可以省略,且去掉 return 关键字。

 五、变量捕获

匿名内部类:

 Lambda:那么Lambda表达式也是同样的

 这种时候我们最后就加上final保护一下

/有返回值无参数
@FunctionalInterface
interface NoParameterReturn {int test();
}
public class TestLambda {public static void main(String[] args) {//加上final保护一下final int a = 0;
//        a = 99; errNoParameterReturn noParameterReturn = () -> {
//            a = 100; errreturn a;};System.out.println(noParameterReturn.test());}
}

 

 

 六、Lambda在集合中的使用

为了能够让 Lambda Java 的集合类集更好的一起使用,集合当中,也新增了部分接口,以便与 Lambda 表达式对接。

1. 用Lambda写改为大根堆

PriorityQueue做为堆,我们知道他默认是小根堆,如果需要大根堆需要给比较器,现在有了

Lambda就可以很简便:

class Test implements Comparator<Integer> {public int compare(Integer o1, Integer o2) {return o2 - o1;}
}public class TestLambda {public static void main(String[] args) {//方式一:PriorityQueue<Integer> priorityQueue = new PriorityQueue<>(new Test());priorityQueue.offer(1);priorityQueue.offer(2);priorityQueue.offer(3);priorityQueue.offer(4);priorityQueue.offer(5);System.out.println(priorityQueue);//方式二:PriorityQueue<Integer> priorityQueue1 = new PriorityQueue<>(new Comparator<Integer>() {@Overridepublic int compare(Integer o1, Integer o2) {return o2 - o1;}});//方式三:PriorityQueue<Integer> priorityQueue2 = new PriorityQueue<>((o1, o2) -> o2 - o1);}

2. 用Lambda遍历hash表

public static void main(String[] args) {HashMap<Integer,String> hashMap = new HashMap<>();hashMap.put(1,"hallo");hashMap.put(2,"word");hashMap.put(3,"and");hashMap.put(4,"Lambda");hashMap.forEach(new BiConsumer<Integer, String>() {@Overridepublic void accept(Integer key, String value) {System.out.println("key: " + key + "  value: " + value);}});System.out.println("===以下是Lambda实现===");hashMap.forEach( (key,value) -> System.out.println("key: " + key + "  value: " + value) );}

结果:

等等就不一 一举例了

http://www.dtcms.com/wzjs/511572.html

相关文章:

  • 番禺人才网单位招考杭州网络推广网络优化
  • 学校网站建设合同sem运营有出路吗
  • 四川做网站有哪些公司网站设计公司上海
  • 网站建设人员工作要求seo专业课程
  • 淘宝网站上的图片是怎么做的网络推广文案怎么写
  • 唐河网站制作公司东莞网站建设工作
  • 成都 企业网站建设公司高端网站制作
  • js商城网站武汉百度seo网站优化
  • 淘宝上的网站建设百度购物平台客服电话
  • 图书馆网站建设目标免费推广论坛
  • 网站内页seo查询google开户
  • 企业形象网站开发宁波seo搜索引擎优化
  • 网站建设 app班级优化大师是干什么用的
  • 网站开发东莞百度热线电话
  • 河南省建设银行网站年报小型培训机构管理系统
  • 怎么做二十八页美食网站网站seo推广公司靠谱吗
  • txt怎么做pdf电子书下载网站b2b b2c c2c o2o区别
  • 建设网站需要学习什么淘宝指数
  • php购物网站开发设计与实现青岛seo推广公司
  • 网络公司网站样本杭州排名优化公司电话
  • 服装定制网站的设计与实现seo 视频
  • 网帆网站建设网站排名顾问
  • 做视频up主视频网站百度排名怎么做
  • 织梦网站访问量统计代码郑州百度快照优化排名
  • html网站建设基本流程图在哪里打广告效果最好
  • 标志设计作业上海优化价格
  • 网页设计界面图seo推广是什么意怿
  • 做商业网站赚钱吗优化公司哪家好
  • 江苏省住房和城乡建设厅 官方网站企业新闻营销
  • 襄阳做网站公司西安seo学院