Java 8作为Java语言的一个重要版本,引入了许多新特性和改进,使得编程更加高效和便捷。以下是一些Java 8的新特性及其在实际应用中的案例,帮助你轻松入门。
1. Lambda表达式
Lambda表达式是Java 8引入的最具革命性的特性之一。它允许你以更简洁的方式编写代码,特别是在处理集合和流操作时。
案例:假设我们有一个学生类,我们需要根据学生的年龄对学生进行排序。
import java.util.Arrays;
import java.util.List;
public class LambdaExample {
public static void main(String[] args) {
List<Student> students = Arrays.asList(
new Student("Alice", 20),
new Student("Bob", 22),
new Student("Charlie", 19)
);
students.sort((s1, s2) -> s1.getAge() - s2.getAge());
for (Student student : students) {
System.out.println(student.getName() + " - " + student.getAge());
}
}
}
class Student {
private String name;
private int age;
public Student(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
2. Stream API
Stream API是Java 8引入的另一个重要特性,它允许你以声明式的方式处理数据集合。
案例:假设我们有一个学生列表,我们需要找出所有年龄大于20岁的学生。
import java.util.List;
import java.util.stream.Collectors;
public class StreamExample {
public static void main(String[] args) {
List<Student> students = Arrays.asList(
new Student("Alice", 20),
new Student("Bob", 22),
new Student("Charlie", 19)
);
List<Student> filteredStudents = students.stream()
.filter(s -> s.getAge() > 20)
.collect(Collectors.toList());
for (Student student : filteredStudents) {
System.out.println(student.getName() + " - " + student.getAge());
}
}
}
3. 方法引用
方法引用是Lambda表达式的一种简写形式,它允许你直接使用现有方法作为Lambda表达式。
案例:假设我们有一个学生类,我们需要打印所有学生的名字。
import java.util.List;
public class MethodReferenceExample {
public static void main(String[] args) {
List<Student> students = Arrays.asList(
new Student("Alice", 20),
new Student("Bob", 22),
new Student("Charlie", 19)
);
students.forEach(Student::printName);
}
}
class Student {
private String name;
private int age;
public Student(String name, int age) {
this.name = name;
this.age = age;
}
public void printName() {
System.out.println(name);
}
}
4. 默认方法和静态方法
Java 8允许你为接口添加默认方法和静态方法。
案例:假设我们有一个名为Comparable的接口,我们为它添加一个默认方法getAge()。
import java.util.List;
import java.util.stream.Collectors;
public interface Comparable {
int getAge();
default void printName() {
System.out.println("Name not available");
}
}
class Student implements Comparable {
private String name;
private int age;
public Student(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public int getAge() {
return age;
}
public void printName() {
System.out.println(name);
}
}
public class DefaultMethodExample {
public static void main(String[] args) {
List<Student> students = Arrays.asList(
new Student("Alice", 20),
new Student("Bob", 22),
new Student("Charlie", 19)
);
students.forEach(Student::printName);
}
}
通过以上案例,你可以看到Java 8的新特性如何在实际应用中发挥作用。掌握这些特性将使你的Java编程更加高效和有趣。