java8概诉
Java 8 (又称为 jdk 1.8) 是 Java 语言开发的一个主要版本。 Oracle 公司于 2014 年 3 月 18 日发布 Java 8 ,它支持函数式编程,新的 JavaScript 引擎,新的日期 API,新的Stream API 等。
函数式接口
package com.etc.interfacedemo;
//@FunctionalInterface主要是为我们做检查,检查这个接口是否是一个函数式接口
//函数式接口只能有一个抽象方法
@FunctionalInterface
public interface LambdaInterface {
void sayHello(String name);
}
package com.etc.lambda;
import com.etc.interfacedemo.LambdaInterface;
public class TestLambda1 {
public static void main(String[] args) {
//之前的写法要去实现接口
/* LambdaInterface lb1=new LambdaInterface() {
@Override
public void sayHello(String name) {
System.out.println("你好:"+name);
}
};
lb1.sayHello("张三");*/
//Lambda写法一
System.out.println("***************Lambda写法一****************");
LambdaInterface lb1=event->System.out.println("你好:"+event);
lb1.sayHello("张三");
//Lambda写法二
System.out.println("***************Lambda写法二****************");
LambdaInterface lb2=(event)->System.out.println("你好:"+event);
lb2.sayHello("张三");
//Lambda写法三
System.out.println("***************Lambda写法三****************");
LambdaInterface lb3=event->{
System.out.println("你好:"+event);
System.out.println("你好:"+event);
System.out.println("你好:"+event);
};
lb3.sayHello("张三");
//Lambda写法四
System.out.println("***************Lambda写法四****************");
LambdaInterface lb4=event->method1(event);
lb4.sayHello("张三");
}
public static void method1(String name) {
System.out.println("你好:"+name);
}
}
理解示例2
package com.etc.interfacedemo;
//@FunctionalInterface主要是为我们做检查,检查这个接口是否是一个函数式接口
//函数式接口只能有一个抽象方法
@FunctionalInterface
public interface LambdaInterface2 {
void sayHello(String name,String sex);
}
package com.etc.lambda;
import com.etc.interfacedemo.LambdaInterface2;
public class TestLambda2 {
public static void main(String[] args) {
LambdaInterface2 lb2=(name,sex)->System.out.println(name+"的性别是:"+sex);
lb2.sayHello("张三", "男");
}
}
方法引用
package com.etc.entity;
public class Apple {
private String color;
private String price;
public Apple() {
super();
}
public Apple(String color, String price) {
super();
this.color = color;
this.price = price;
}
@Override
public String toString() {
return "Apple [color=" + color + ", price=" + price + "]";
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public String getPrice() {
return price;
}
public void setPrice(String price) {
this.price = price;
}
}
package com.etc.interfacedemo;
import com.etc.entity.Apple;
@FunctionalInterface
public interface AppleInterface {
Apple creatApple();
}
package com.etc.lambda;
import java.util.ArrayList;
import java.util.List;
import com.etc.entity.Apple;
import com.etc.interfacedemo.AppleInterface;
public class TestApple {
public static void main(String[] args) {
//之前的方式
Apple apple=new Apple();
System.out.println("*************方式一直接实例*****************");
System.out.println(apple);
//第二种方式
AppleInterface appleInterface1=new AppleInterface() {
@Override
public Apple creatApple() {
return new Apple();
}
};
Apple apple1=appleInterface1.creatApple();
System.out.println("*************方式二通过接口方法进行实例*****************");
System.out.println(apple1);
//第三种方式
AppleInterface appleInterface2=()->new Apple();
Apple apple2=appleInterface2.creatApple();
System.out.println("*************方式三通过Lambda表达式实现接口方法进行实例*****************");
System.out.println(apple2);
//第四种方式
//::指代我们要去调用方法,前面是对应的Class后面是对应要调用的方法
AppleInterface appleInterface3=Apple::new;
Apple apple3=appleInterface3.creatApple();
System.out.println("*************方式四通过方法引用的方式实现接口方法进行实例*****************");
System.out.println(apple3);
List list=new ArrayList();
list.add("1");
list.add("2");
list.add("3");
list.add("4");
list.add("5");
System.out.println("*************普通循环遍历集合*****************");
for(int i=0;i<list.size();i++) {
System.out.println(list.get(i));
}
System.out.println("*************增强型for循环遍历集合*****************");
for(Object obj:list) {
System.out.println(obj);
}
System.out.println("*************Foreach循环+方法引用遍历集合*****************");
list.forEach(System.out::println);
}
}
LocalDate
我们看一下api文档
实操一下
package com.etc.localdate;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
public class TestTime {
public static void main(String[] args) {
//获取当前年月日时分秒
LocalDateTime myDateTime=LocalDateTime.now();
System.out.println(myDateTime);
//获取当前年月日
LocalDate myDate=LocalDate.now();
System.out.println(myDate);
//获取时分秒
LocalTime myTime=LocalTime.now();
System.out.println(myTime);
System.out.println("日期是:"+myDateTime.toLocalDate());
System.out.println("时间是:"+myDateTime.toLocalTime());
//之前是使用simpleDateFormatter
//将日期转换字符串并按格式输出
//DateTimeFormatter
DateTimeFormatter dtf=DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss");
String dateTimeStr=myDateTime.format(dtf);
System.out.println(dateTimeStr);
//字符串转时间格式
LocalDateTime dateTime2=LocalDateTime.parse(dateTimeStr, dtf);
System.out.println(dateTime2);
//字符串转时间格式
DateTimeFormatter dtf1=DateTimeFormatter.ofPattern("yyyy年MM月dd日");
String dateTimeStr1=myDateTime.format(dtf1);
LocalDate dateTime3=LocalDate.parse(dateTimeStr1, dtf1);
System.out.println(dateTime3);
}
}