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));
}