Java 9 到 Java 17 的新特性之重生在deepseek-Java-E先生的博客
Java
MySQL
大数据
Python
前端
黑科技
大语言模型
    首页 >> 互联网 >> Java

Java 9 到 Java 17 的新特性之重生在deepseek

[导读]:Java学习指南 - 第二十天:1. Java 9 新特性Java 9 引入了模块化系统(Jigsaw 项目),以及其他一些重要的改进。1.1 模块化系统模块化系统通过module-info.java文件定义模块的依赖关系和导出包。//module-info.javamodulecom.example.myapp{requiresjava....

Java学习指南 - 第二十天:

1. Java 9 新特性

Java 9 引入了模块化系统(Jigsaw 项目),以及其他一些重要的改进。

1.1 模块化系统

模块化系统通过 module-info.java 文件定义模块的依赖关系和导出包。

// module-info.java
module com.example.myapp {
    requires java.base;
    requires java.sql;
    exports com.example.myapp.api;
}
1.2 集合工厂方法

Java 9 引入了新的集合工厂方法,简化了集合的创建。

import java.util.List;
import java.util.Set;
import java.util.Map;

public class Main {
    public static void main(String[] args) {
        List<String> list = List.of("Alice", "Bob", "Charlie");
        Set<String> set = Set.of("Alice", "Bob", "Charlie");
        Map<String, Integer> map = Map.of("Alice", 25, "Bob", 30, "Charlie", 35);

        System.out.println("List: " + list);
        System.out.println("Set: " + set);
        System.out.println("Map: " + map);
    }
}

2. Java 10 新特性

Java 10 引入了局部变量类型推断(var 关键字)。

2.1 局部变量类型推断
public class Main {
    public static void main(String[] args) {
        var list = List.of("Alice", "Bob", "Charlie");
        var set = Set.of("Alice", "Bob", "Charlie");
        var map = Map.of("Alice", 25, "Bob", 30, "Charlie", 35);

        System.out.println("List: " + list);
        System.out.println("Set: " + set);
        System.out.println("Map: " + map);
    }
}

3. Java 11 新特性

Java 11 是一个长期支持(LTS)版本,引入了许多新特性。

3.1 新的字符串方法
public class Main {
    public static void main(String[] args) {
        String str = "  Hello, World!  ";
        System.out.println("Trimmed: " + str.strip());
        System.out.println("Repeat: " + str.repeat(2));
    }
}
3.2 HTTP Client API

Java 11 引入了新的 HTTP Client API,支持同步和异步请求。

import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

public class Main {
    public static void main(String[] args) throws Exception {
        HttpClient client = HttpClient.newHttpClient();
        HttpRequest request = HttpRequest.newBuilder()
                .uri(URI.create("https://www.example.com"))
                .build();

        HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
        System.out.println("Response: " + response.body());
    }
}

4. Java 12 到 Java 17 新特性

Java 12 到 Java 17 引入了许多新特性,包括 Switch 表达式、文本块、Records 等。

4.1 Switch 表达式(Java 12+)
public class Main {
    public static void main(String[] args) {
        String day = "MONDAY";
        String type = switch (day) {
            case "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY" -> "Weekday";
            case "SATURDAY", "SUNDAY" -> "Weekend";
            default -> throw new IllegalArgumentException("Invalid day: " + day);
        };
        System.out.println("Day type: " + type);
    }
}
4.2 文本块(Java 13+)
public class Main {
    public static void main(String[] args) {
        String json = """
                {
                    "name": "Alice",
                    "age": 25
                }
                """;
        System.out.println("JSON: " + json);
    }
}
4.3 Records(Java 14+)

Records 是一种不可变的数据类,简化了 POJO 的编写。

public record Person(String name, int age) {}

public class Main {
    public static void main(String[] args) {
        Person person = new Person("Alice", 25);
        System.out.println("Person: " + person);
    }
}

5. 今日任务

  1. 使用 Java 9 的集合工厂方法创建一个不可变的列表和映射。

  2. 使用 Java 10 的 var 关键字声明局部变量。

  3. 使用 Java 11 的 HTTP Client API 发送一个 HTTP GET 请求并打印响应。

  4. 使用 Java 14 的 Records 定义一个简单的数据类。

6. 示例代码

import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.util.List;
import java.util.Map;

public class Main {
    public static void main(String[] args) throws Exception {
        // 任务1:使用 Java 9 的集合工厂方法
        List<String> list = List.of("Alice", "Bob", "Charlie");
        Map<String, Integer> map = Map.of("Alice", 25, "Bob", 30, "Charlie", 35);
        System.out.println("List: " + list);
        System.out.println("Map: " + map);

        // 任务2:使用 Java 10 的 var 关键字
        var name = "Alice";
        var age = 25;
        System.out.println("Name: " + name + ", Age: " + age);

        // 任务3:使用 Java 11 的 HTTP Client API
        HttpClient client = HttpClient.newHttpClient();
        HttpRequest request = HttpRequest.newBuilder()
                .uri(URI.create("https://www.example.com"))
                .build();
        HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
        System.out.println("Response: " + response.body());

        // 任务4:使用 Java 14 的 Records
        Person person = new Person("Alice", 25);
        System.out.println("Person: " + person);
    }
}

record Person(String name, int age) {}

7. 总结

今天的内容涵盖了 Java 9 到 Java 17 的一些重要新特性,包括模块化系统、集合工厂方法、局部变量类型推断、HTTP Client API、Switch 表达式、文本块和 Records。这些新特性可以显著提高代码的简洁性和可读性。明天我们将深入学习 Java 的并发编程。


提示:多动手编写代码,尝试使用这些新特性解决实际问题,理解它们的工作原理和适用场景。

祝你学习愉快!


本文来自E先生的博客,如若转载,请注明出处:https://javajz.cn

留言区

联系人:
手   机:
内   容:
验证码:

历史留言

欢迎加Easy的QQ