Java8新特性

来源:互联网 发布:php 数组去除空值 编辑:程序博客网 时间:2024/06/01 18:42

2014年3月27日正式推出Java8

重要特性:

Lambda

Nashorn JavaScript

新的日期与时间API

一套简洁的配置文件

从JVM中去除了“永久代”

增强的注解功能


下列代码下载链接: 点击打开链接


一、Lambda

1.参数列表:

2.箭头符号“->”

3.代码块

【代码示例】

public static void main(String[] args) {        new Action(){            @Override            public void execute(String content){                System.out.println(content);            }        }.execute("jdk8之前版本");        Action login=(String content)->{            System.out.println(content);        };        login.execute("jdk8之lembda语法");}    static interface Action{        void execute(String content);    }



二、Stream数据流

【Person类】

public class Person {    public static enum Sex{Male,Female;}    private String name;    private Sex gender;    private int age;    private double height;    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public Sex getGender() {        return gender;    }    public void setGender(Sex gender) {        this.gender = gender;    }    public int getAge() {        return age;    }    public void setAge(int age) {        this.age = age;    }    public double getHeight() {        return height;    }    public void setHeight(double height) {        this.height = height;    }    @Override    public String toString() {        return "Person{" +                "name='" + name + '\'' +                ", gender=" + gender +                ", age=" + age +                ", height=" + height +                '}';    }    public Person(String name, Sex gender, int age, double height) {        this.name = name;        this.gender = gender;        this.age = age;        this.height = height;    }    public Person() {    }}

【代码示例】

    public static void main(String[] args) {        List<Person> personList =  createPerson();        Stream<Person> stream= personList.stream();        stream.forEach(                p-> System.out.println(p.toString())                );    }    static List<Person> createPerson(){        List<Person> personList = new ArrayList<>();        Person p = new Person("milan",Person.Sex.Male,117,1988);        personList.add(p);        p = new Person("kaka",Person.Sex.Male,22,1984);        personList.add(p);        p = new Person("Inzaghi",Person.Sex.Male,117,1976);        personList.add(p);        p = new Person("sheva",Person.Sex.Male,117,1976);        personList.add(p);        return personList;    }


三、过滤器filter

【代码示例】

    public static void main(String[] args) {        List<Person> personList =  createPerson();        personList.stream()                .filter(person -> person.getGender()==Person.Sex.Male)                .forEach(person -> System.out.println(person));    }    static List<Person> createPerson(){        List<Person> personList = new ArrayList<>();        Person p = new Person("milan", Person.Sex.Male,117,1988);        personList.add(p);        p = new Person("kaka", Person.Sex.Female,22,1984);        personList.add(p);        p = new Person("Inzaghi", Person.Sex.Male,43,1976);        personList.add(p);        p = new Person("sheva", Person.Sex.Female,40,1976);        personList.add(p);        return personList;    }



四、DoubleStream类

【代码示例】

public static void main(String[] args) {        List<Person> personList =  createPerson();        double avgrageHeight = personList.stream()                .filter(person -> person.getName().indexOf("i")>=0)                .mapToDouble(person -> person.getHeight())                .average()                .getAsDouble();        System.out.println("包含i的"+avgrageHeight);    }    static List<Person> createPerson(){        List<Person> personList = new ArrayList<>();        Person p = new Person("milan", Person.Sex.Male,117,1899);        personList.add(p);        p = new Person("kaka", Person.Sex.Female,22,1984);        personList.add(p);        p = new Person("Inzaghi", Person.Sex.Male,43,1976);        personList.add(p);        p = new Person("sheva", Person.Sex.Female,40,1976);        personList.add(p);        return personList;    }


五、LocalDate

【代码示例】

    public static void main(String[] args) {        LocalDate dateTime = LocalDate.now();        System.out.println(dateTime.getYear()+"年");        System.out.println(dateTime.getMonthValue()+"月");        System.out.println(dateTime.getDayOfMonth()+"日");    }


六、LocalTime

【代码示例】

    public static void main(String[] args) {        LocalTime localTime = LocalTime.now();        System.out.println(localTime.getHour()+"时");        System.out.println(localTime.getMinute()+"分");        System.out.println(localTime.getSecond()+"秒");        System.out.println(localTime.toString());    }



七、LocalDateTime

【代码示例】

     public static void main(String[] args) {        LocalDateTime localDateTime = LocalDateTime.now();        System.out.println(localDateTime.getYear()+"年");        System.out.println(localDateTime.getMonthValue()+"月");        System.out.println(localDateTime.getDayOfMonth()+"日");        System.out.println(localDateTime.getHour()+"时");        System.out.println(localDateTime.getMinute()+"分");        System.out.println(localDateTime.getSecond()+"秒");        System.out.println(localDateTime.toString());    }



八、DateTimeFormatter

【代码示例】

    public static void main(String[] args) {        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd:HH:mm:ss");        LocalDateTime date = LocalDateTime.parse("2016-11-11:21:42:22",formatter);        System.out.println(date.toString());    }




九、ZonedDateTime

【代码示例】

    public static void main(String[] args) {        ZonedDateTime zonedDateTime = ZonedDateTime.now();        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM/dd/yyyy:HH:mm:ss");        System.out.println(zonedDateTime.format(formatter));    }




0 0
原创粉丝点击