如何制作h5做网站,网站开发者工具下载,图品汇免费素材网,简单的电商网站Java 8
Java 8 把函数式编程里的一些思想融入到 Java 的语法中#xff0c;让我们可以用更少的时间写出高效的代码。
Java 8的优势#xff1a;
代码行更少Lambda表达式Stream API便于并行减少空指针JVM优化兼容老版本
Lambda
Lambda表达式是一段可以传递的代码#xff0…Java 8
Java 8 把函数式编程里的一些思想融入到 Java 的语法中让我们可以用更少的时间写出高效的代码。
Java 8的优势
代码行更少Lambda表达式Stream API便于并行减少空指针JVM优化兼容老版本
Lambda
Lambda表达式是一段可以传递的代码它的核心思想是将面向对象中的传递数据变成传递行为。
基础语法
expression (variable) - actionvariable这是一个变量一个占位符也可是多个变量action实现代码的逻辑部分它可以是一行代码也可以是一个代码片段
当一个动作实现无法用一行代码完成可以编写一段代码用{}包裹起来。
函数式接口
函数式接口是只有一个方法的接口用作Lambda表达式的类型。
函数式接口输入一个人的年龄判断这个人是否成年
package org.example;public class FunctionInterfaceDemo {FunctionalInterfaceinterface PredicateT {boolean test(T t);}public static boolean doPredicate(int age, PredicateInteger predicate) {return predicate.test(age);}public static void main(String[] args) {boolean isAdult doPredicate(20, x - x 18);System.out.println(isAdult);}
}
实际上诸如上述例子中的接口JDK中有java.util.function包
接口参数返回值类别ConsumerTvoid消费型接口SupplierNoneT供给型接口FunctionTR函数型接口PredicateTBoolean断言型接口
Stream API
Stream是Java8中处理集合的抽象概念它可以指定你希望对集合的操作但是执行操作的时间交给具体实现来决定。
Stream提供了对集合操作的增强极大的提高了操作集合对象的便利性。
java.util.stream.Stream中定义了许多流操作的方法。
流操作其实可以分为两类处理操作、聚合操作
处理操作诸如filter、map等处理操作将Stream一层一层的进行抽离返回一个流给下一层使用聚合操作从最后一次流中生成一个结果给调用方foreach只做处理不做返回
filter筛选数据时用到参数是PredicateT predicate
map将流中处理的数据类型进行转换可以将流中的值转换为一个新的流
flatMap用于提取子流的操作
max和min查找Stream中的最大或最小元素
收集结果调用Stream中的collect方法
日期和时间
新的日期API
ZoneId时区ID用来确定Instant和LocalDateTime相互转换的规则Instant用来表示时间线上的一个点LocalDate表示没有时区的日期不可变且线程安全LocalTime表示没有时区的时间不可变且线程安全LocalDateTime表示没有时区的日期时间不可变且线程安全Clock用于访问当前时刻、日期、时间用到时区Duration用秒和纳秒表示时间的数量
package org.example;import java.time.DayOfWeek;
import java.time.LocalDate;
import java.time.temporal.ChronoUnit;public class LocalDateTest {public static void main(String[] args) {// 获取当前日期LocalDate localDate LocalDate.now();System.out.println(localDate);// 添加一天LocalDate tomorrow localDate.plusDays(1);// 减去一个月LocalDate prevMonth localDate.minus(1, ChronoUnit.MONTHS);// 判断闰年boolean leapYear localDate.isLeapYear();System.out.println(是否闰年 leapYear);// 获取星期DayOfWeek week localDate.getDayOfWeek();System.out.println(week);}
}
package org.example;import java.time.LocalTime;public class LocalTimeTest {public static void main(String[] args) {// 当前时间LocalTime now LocalTime.now();System.out.println(now);// 添加一个小时LocalTime nextHour now.plusHours(1);System.out.println(nextHour);// 获取小时和分钟int hour now.getHour();System.out.println(小时 hour);int minute now.getMinute();System.out.println(分钟 minute);}
}
日期格式化
package org.example;import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;public class DateTimeFormatterTest {public static void main(String[] args) {LocalDateTime now LocalDateTime.now();DateTimeFormatter dateTimeFormatter DateTimeFormatter.ofPattern(yyyy-MM-dd HH:mm:ss);System.out.println(now);System.out.println(now.format(dateTimeFormatter));}
}
文件读写操作
package org.example;import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.List;public class FilesTest {public static void main(String[] args) throws IOException {// 使用Files类快速实现文件读写操作// 写文件Files.write(Paths.get(test.txt), Hello Java\nHello World.getBytes(StandardCharsets.UTF_8));// 读文件byte[] data Files.readAllBytes(Paths.get(test.txt));String content new String(data, StandardCharsets.UTF_8);System.out.println(content);// 按照行读取ListString lines Files.readAllLines(Paths.get(test.txt));System.out.println(lines);}
}
参考资料
跟上Java8 - 带你实战Java8
Java8-explorer
30 seconds of java8