✨探索Java基础 Java 8以上新特性✨
Java 8 及以上的新特性
Java 8 引入了一些重大更新和新特性,这些特性极大地增强了Java的功能和性能。随着Java 9、10、11、12及以后的版本发布,Java持续引入更多的改进和新功能。本文将介绍Java 8及以上版本的一些关键新特性。
Java 8 新特性
1. Lambda 表达式
Lambda表达式提供了一种更简洁的方式来表示单方法接口(即函数式接口)的实现。
示例代码:
import java.util.Arrays;
import java.util.List;
public class LambdaExample {
public static void main(String[] args) {
List<String> names = Arrays.asList("John", "Jane", "Jack");
// 使用Lambda表达式打印每个名字
names.forEach(name -> System.out.println(name));
}
}
2. 函数式接口
函数式接口是只包含一个抽象方法的接口,可以使用Lambda表达式来创建其实例。
示例代码:
@FunctionalInterface
interface Greeting {
void sayHello(String name);
}
public class FunctionalInterfaceExample {
public static void main(String[] args) {
// 使用Lambda表达式实现函数式接口
Greeting greeting = (name) -> System.out.println("Hello, " + name);
greeting.sayHello("John");
}
}
3. Stream API
Stream API 提供了一种高效且易于使用的方式来处理集合数据,可以执行过滤、排序、映射等操作。
示例代码:
import java.util.Arrays;
import java.util.List;
public class StreamExample {
public static void main(String[] args) {
List<String> names = Arrays.asList("John", "Jane", "Jack");
// 使用Stream过滤以J开头的名字并打印
names.stream()
.filter(name -> name.startsWith("J"))
.forEach(System.out::println);
}
}
4. 默认方法和静态方法
接口可以包含默认方法和静态方法,默认方法允许在不破坏现有实现的情况下向接口添加新方法。
示例代码:
interface MyInterface {
// 默认方法
default void defaultMethod() {
System.out.println("默认方法");
}
// 静态方法
static void staticMethod() {
System.out.println("静态方法");
}
}
public class DefaultStaticMethodExample implements MyInterface {
public static void main(String[] args) {
DefaultStaticMethodExample example = new DefaultStaticMethodExample();
// 调用默认方法
example.defaultMethod();
// 调用静态方法
MyInterface.staticMethod();
}
}
5. 新的日期时间API
Java 8 引入了新的日期和时间API,包括LocalDate
、LocalTime
、LocalDateTime
等类。
示例代码:
import java.time.LocalDate;
import java.time.LocalTime;
import java.time.LocalDateTime;
public class DateTimeExample {
public static void main(String[] args) {
// 获取当前日期
LocalDate date = LocalDate.now();
System.out.println("当前日期: " + date);
// 获取当前时间
LocalTime time = LocalTime.now();
System.out.println("当前时间: " + time);
// 获取当前日期和时间
LocalDateTime dateTime = LocalDateTime.now();
System.out.println("当前日期和时间: " + dateTime);
}
}
Java 9 新特性
1. 模块系统 (Project Jigsaw)
Java 9 引入了模块系统,使得开发者可以更好地组织和封装代码,提升了应用程序的可维护性和安全性。
示例代码:
// module-info.java
module com.example.module {
requires java.base;
exports com.example.module;
}
2. JShell
JShell 是Java 9 新增的交互式工具,允许开发者在没有编写完整类的情况下,快速测试代码片段。
示例代码:
jshell> System.out.println("Hello, JShell!");
Hello, JShell!
Java 10 新特性
1. 局部变量类型推断
Java 10 引入了var
关键字,使得编译器可以自动推断局部变量的类型。
示例代码:
public class VarExample {
public static void main(String[] args) {
var message = "Hello, Java 10!";
System.out.println(message);
}
}
Java 11 新特性
1. 单文件程序执行
Java 11 允许直接运行单文件Java程序,无需编译步骤。
示例代码:
java HelloWorld.java
2. 新的字符串方法
Java 11 添加了一些新的字符串方法,如isBlank()
、lines()
、strip()
等。
示例代码:
public class StringMethodsExample {
public static void main(String[] args) {
String str = " ";
System.out.println(str.isBlank()); // true
String str2 = "Hello\nWorld";
str2.lines().forEach(System.out::println);
String str3 = " hello ";
System.out.println(str3.strip()); // "hello"
}
}
Java 12 新特性
1. Switch表达式 (预览功能)
Java 12 引入了增强的Switch表达式,使得Switch语句更简洁和强大。
示例代码:
public class SwitchExpressionExample {
public static void main(String[] args) {
int day = 2;
String dayName = switch (day) {
case 1 -> "Monday";
case 2 -> "Tuesday";
default -> "Invalid day";
};
System.out.println(dayName); // Tuesday
}
}
面试题及解答
以下是一些关于Java 8及以上新特性的面试题及其解答。
面试题 1:什么是Lambda表达式,如何使用它?
解答: Lambda表达式是一种简洁的表示单方法接口(函数式接口)实现的方法。可以使用它来简化匿名内部类的代码。语法格式为 (参数列表) -> {方法体}
。
示例代码:
List<String> names = Arrays.asList("John", "Jane", "Jack");
names.forEach(name -> System.out.println(name));
面试题 2:什么是函数式接口?请举例说明。
解答: 函数式接口是只包含一个抽象方法的接口,可以用Lambda表达式来实现。使用@FunctionalInterface
注解可以标记函数式接口。
示例代码:
@FunctionalInterface
interface Greeting {
void sayHello(String name);
}
面试题 3:什么是Stream API,它有哪些常用操作?
解答: Stream API 是一种处理集合数据的高效工具。常用操作包括filter
、map
、sorted
、forEach
等。
示例代码:
List<String> names = Arrays.asList("John", "Jane", "Jack");
names.stream()
.filter(name -> name.startsWith("J"))
.forEach(System.out::println);
面试题 4:Java 8 引入了哪些新的日期时间类?请简单介绍。
解答: Java 8 引入了新的日期时间API,包括LocalDate
、LocalTime
、LocalDateTime
等类,用于更方便地处理日期和时间。
示例代码:
LocalDate date = LocalDate.now();
LocalTime time = LocalTime.now();
LocalDateTime dateTime = LocalDateTime.now();
面试题 5:Java 10 引入了什么新的关键字?它有什么作用?
解答: Java 10 引入了var
关键字,用于局部变量类型推断。编译器会自动推断变量的类型。
示例代码:
var message = "Hello, Java 10!";
System.out.println(message);
结论
本文介绍了Java 8 及以上版本引入的一些关键新特性。从Lambda表达式到模块系统,再到局部变量类型推断和增强的Switch表达式,每一个新特性都大大提升了Java的开发体验。
觉得有用的话可以点点赞 (/ω\),支持一下。
如果愿意的话关注一下。会对你有更多的帮助。
每天都会不定时更新哦 >人< 。
标签:Java,示例,基础,System,特性,println,public,out From: https://blog.csdn.net/jgk666666/article/details/140252557