jdk1.8新特性详解,jdk7新特性详细

  jdk1.8新特性详解,jdk7新特性详细

  函数式编程

  面向对象强调“一切都是对象”。想做一件事,就要找一个对象去做。函数式编程强调“做什么”而不是“怎么做”。

  普通的开启线程

  //匿名内部类对象

  Runnable task=new Runnable() {

  @覆盖

  公共无效运行(){

  System.out.println(乌鸦飞);

  }

  };

  新线程(任务)。start();更多与java相关的免费视频教程:java在线教程

  函数式编程开启线程

  new thread(()-system . out . println(龙卷风摧毁停车场))。start();前面的括号:方法参数。如果没有参数,则编写()。箭头指向以后要做的事情。箭头后面就像一个方法体大括号,代表要做的具体内容。

  Lambda表达式

  Lambda expression又称闭包,是推动Java 8发布的最重要的新特性。

  Lambda允许函数作为方法的参数(函数作为参数传递到方法中)。使用Lambda表达式可以使代码更加简洁紧凑。

  三要素:参数、箭头 、代码

  格式:(参数类型参数名称)-{某代码}

  使用Lambda表达式的前提:必须有一个接口,并且接口中只有一个抽象方法。

  演示:用makeFood()方法编写一个Cook接口。

  公共静态void main(String[] args) {

  方法(()- {

  System.out.println(闪刀启动!);

  });

  }

  私有静态空方法(Cook cook) {

  cook . make food();

  }Lambda表达式省略规则:

  参数可以省略。但是,所有参数的类型只能同时省略,或者根本不省略。如果只有一个参数,括号可以省略。如果大括号中只有一个语句,则无论是否有返回值,都可以省略回车、大括号和分号。

  公共静态void main(String[] args) {

  方法((a,b)-a b);

  }

  私有静态void方法(计算器计算器){

  int result=calculator.sum(1234,9876);

  System.out.println(结果);

  }创建接口时,也可以使用lambda表达式,而不是匿名内部类。

  runnable task=()-system . out . println(闪刀启动!);

  新线程(任务)。start();函数式接口

  接口只有一个抽象方法,叫做函数接口。

  JDK8中增加了注释@FunctionalInterface来检查一个接口是否是功能接口。如果它不是一个函数接口,编译时会报告一个错误。@ functionalinterface注释是可选的。即使不使用这个注释,只要保证接口满足功能接口的定义要求,也是功能接口。

  @功能界面

  公共接口MyInterface {

  void方法();

  }方法引用

  printer printer=(str)-system . out . println(str);这段代码实际上可以缩写。

  只要是可导的,就可以被引用,所以传递引用是没有意义的。因此,在这里实际上可以使用方法引用来缩写System.out:println。

  从java8开始,引入了一个全新的运算符,method reference(两个冒号写在一起),它所在的表达式是一个方法引用。方法引用的本质和Lambda完全一样,目的是简化Lambda表达式的编写。

  Lambda: s-System.out.println(s)的拼写

  方法参考编写:System.out:println

  两种发型完全等同。

  公共静态void main(String[] args) {

  方法(system . out:println);

  }

  私有静态void方法(打印机打印机){

  printer . print( hello );

  }接口

  default方法

  接口本来是两个抽象方法,现在需要变成三个抽象方法。这时它的实现类也需要实现新的方法。

  实现类太多的时候,操作起来很麻烦。在JDK之前,它采用了开放-封闭的设计模式:对扩展开放,对修改封闭。即创建一个新的接口,继承原来的接口,定义一个新的方法。但是,在这种情况下,原来的实现类没有新方法,所以可以使用接口默认方法。

  用关键字default修饰的方法需要方法体。这个方法的所有子类都会默认实现(不用自己写)。如果要重写重写,可以在实现类中重写重写。

  /**

  *从java8开始,该接口允许您定义默认方法。

  *修饰符:public default(public可以省略,default不能省略)

  */

  公共接口MyInterface {

  void方法1();

  void方法2();

  默认void方法New() {

  System.out.println(接口默认方法执行);

  }

  }注意:接口中的default方法相当于是一个新的关键字,和四种修饰符的“default”并非一个概念。

  通过使用默认关键字,程序可以达到“多重继承”的效果。

  static方法

  从java8开始,接口中允许定义静态方法,用法和一般类的静态方法一样。

  公共接口动物{

  void eat();

  静态动物getAnimal() {

  返回新的Cat();

  }

  }流式操作

  开发人员对流式处理的第一感觉是,它使收集操作简单多了。通常我们需要多行代码才能完成的操作,借助流处理可以在一行中实现。

  例如,如果我们想从一个包含整数的集合中过滤出所有偶数,并将它们封装成一个新的列表返回,那么在java8之前,我们需要通过下面的代码来实现:

  对于num集合:

  list integer evens=new ArrayList();

  for(最终整数个数:nums) {

  if (num % 2==0) {

  evens . add(num);

  }

  }通过java8中的流处理,我们可以将代码简化为:

  ListInteger evens=nums.stream()。过滤器(数量% 2==0)。collect(collectors . to list());首先简单解释一下上面这句话的意思。stream()操作将集合转换成流,filter()执行我们的自定义过滤处理。在这里,所有偶数都被lambda表达式过滤掉。最后,我们通过collect()封装结果,并将其封装指定为通过Collectors.toList()返回的列表集。

  常见操作案例:

  //初始化列表集合

  ListString list=new ArrayList string();

  List.add(测试数据1 );

  List.add(测试数据2 );

  List.add(测试数据3 );

  List.add(测试数据12 );

  //使用表达式遍历集合

  list . foreach(s-system . out . println(s));

  //使用谓词和过滤条件过滤元素。

  predicate string contain 1=n-n . contains( 1 );

  predicate string contain 2=n-n . contains( 2 );

  //根据条件遍历集合

  list.stream()。过滤器(容器1)。forEach(n-system . out . println(n));

  list.stream()。过滤器(包含1个测试)。forEach(s-system . out . println(s));

  list.stream()。过滤器(容器1和容器2)。forEach(n-system . out . println(n));

  list.stream()。过滤器(容器1或容器2)。forEach(n-system . out . println(n));

  //将筛选的元素放回集合中

  ListString newList=list.stream()。过滤器(容器1和容器2)。collect(collectors . to list());

  集合的小数和

  BigDecimal sum=list。流()。地图(Person:getAmount)。reduce(BigDecimal:add)。get();

  //排序,也需要一个新的集合来接收

  list student result list=new ArrayList student();

  结果=list.stream()。已排序(comparator.com帕林(student: getage))。Collect (collectors.tolist())推荐java相关文章:java Zero Foundation入门。

  欢迎大家一起学习!以上是JDK8新特性的细节。更多请关注我们的其他相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • ubuntu18.04安装jdk8,ubuntu中安装jdk
  • ubuntu18.04安装jdk8,ubuntu中安装jdk,Ubuntu 安装 JDK8 的两种方法(总结)
  • JDK1.8安装教程,安装配置jdk1.8
  • JDK1.8安装教程,安装配置jdk1.8,2020JDK1.8安装教程详解(一次就可安装成功)
  • ,,jdk8使用stream实现两个list集合合并成一个(对象属性的合并)
  • ,,IntelliJ IDEA之配置JDK的4种方式(小结)
  • java代理模式详解,java代理模式的典型例子,java代理模式(jdk proxy)
  • java中spi有什么作用,jdk的spi机制
  • java中spi有什么作用,jdk的spi机制,一文搞懂Java的SPI机制(推荐)
  • ,,详解JDK自带javap命令反编译class文件和Jad反编译class文件(推荐使用jad)
  • ,,JAVA帮助文档全系列 JDK1.5 JDK1.6 JDK1.7 官方中英完整版整理
  • ,,JAVA JDK8 List分组的实现和用法
  • idea配置tomcat和jdk,idea配置本地gradle
  • 简单叙述一下jdk环境变量的配置,jdk环境变量配置是干什么的
  • 建立Java开发环境,安装JDK,一般需要设置环境变量,在安装完JDK后,需要在环境变量中配置
  • 留言与评论(共有 条评论)
       
    验证码: