您的位置首页生活百科

java8有哪些新特性

java8有哪些新特性

的有关信息介绍如下:

java8有哪些新特性

java8的新特性:

速度更快

代码更少(增加了新的语法Lambda表达式)

强大的Stream API

便于并行

最大化减少控制着异常Optional

Lambda表达式:

java8引入了一个新的操作符"->",该操作符将表达式拆分为两部分:

左侧:Lambada表示表达式的参数列表

右侧:Lambda表示所需要执行的功能

@Test

public void test2() {

Consumer consumer = (x) -> System.out.println(x);

consumer.accept("我是帅哥");

}

函数式接口

package com.gwolf;

@FunctionalInterface

public interface MyPredicate {

public boolean test(T t);

}

方法引用与构造器引用

public void test1() {

Consumer con = (x) -> System.out.println(x);

Consumer consumer = System.out::println;

consumer.accept("我是帅哥");

}

Stream API流式计算

Stream API是java8中处理集合的关键抽象概念,它可以指定您希望对集合进行的操作,可以执行非常复杂的查找、过滤和映射数据等操作。使用Stream API对集合数据进行操作,就类似于使用SQL执行的数据库查询。

package com.gwolf;

import com.gwolf.vo.Dept;

import org.junit.Test;

import java.util.ArrayList;

import java.util.Arrays;

import java.util.List;

import java.util.stream.Stream;

public class TestStreamAPI {

@Test

public void test1() {

//可以通过Collection系列集合提供提供的Stream()或parallelStream

List list = new ArrayList<>();

Stream stream = list.stream();

//通过Arrays中的静态方法stream()方法得到数组流

Dept[] depts = new Dept;

Stream deptStream = Arrays.stream(depts);

}

}

接口中的默认方法与静态方法

public interface MyFun {

default String getName() {

return "hello";

}

}

新日期API

package com.gwolf;

import java.time.LocalDate;

import java.time.Period;

import java.time.format.DateTimeFormatter;

import java.time.temporal.ChronoUnit;

public class DateUtils {

public static void main(String[] args) {

LocalDate today = LocalDate.now();

System.out.println("今天的日期:" + today);

//明天的日期

LocalDate tomrrow = today.plus(1, ChronoUnit.DAYS);

System.out.println("明天的日期:" + tomrrow);

System.out.println("日期" + tomrrow + "是否在" + today +"之后" + tomrrow.isAfter(today));

System.out.println("日期" + tomrrow + "是否在" + today +"之前" + tomrrow.isBefore(today));

}

public static LocalDate plus(LocalDate localDate,

int between,ChronoUnit chronoUnit) {

return localDate.plus(between,chronoUnit);

}

/**

* 格式化日期

* @param localDate

* @param pattern

* @return

*/

public static String parseDate(LocalDate localDate,String pattern) {

DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(pattern);

return localDate.format(dateTimeFormatter);

}

/**

* 比较两个时间相差的月份

* @param one

* @param two

* @return

*/

public static Integer between(LocalDate one,LocalDate two) {

return Period.between(one,two).getMonths();

}

/**

* 字符串转化成日期

* @param strDate

* @param pattern

* @return

*/

public static LocalDate formatDate(String strDate,String pattern) {

DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(pattern);

return LocalDate.parse(strDate,dateTimeFormatter);

}

}