首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >java12使用教程

java12使用教程

作者头像
程序员老彭
发布2025-11-12 16:02:57
发布2025-11-12 16:02:57
1040
举报
文章被收录于专栏:软件安装软件安装

Java 12 是一个非长期支持(Non-LTS)版本,于 2019 年 3 月发布,引入了一些实用的新特性和改进。以下是 Java 12 的使用教程,包括环境配置、新特性示例和基本使用方法:

一、环境配置
1. 下载与安装

访问 Oracle 官网AdoptOpenJDK 下载 Java 12 安装包。

安装完成后,配置环境变量:

Windows:设置 JAVA_HOME 为安装路径,将 %JAVA_HOME%\bin 添加到 Path

Linux/macOS:在 .bashrc.zshrc 中添加:

代码语言:javascript
复制
export JAVA_HOME=/path/to/jdk-12
export PATH=$JAVA_HOME/bin:$PATH

验证安装:

代码语言:javascript
复制
java -version  # 应显示 "openjdk version "12.x.x"" 或类似信息
二、Java 12 核心新特性及示例
1. Switch 表达式(预览特性)

Java 12 引入了 switch 表达式的预览功能,支持简化的语法和返回值:

代码语言:javascript
复制
// 传统 switch 语句(Java 8)
int numLetters;
switch (day) {
    case MONDAY:
    case FRIDAY:
    case SUNDAY:
        numLetters = 6;
        break;
    case TUESDAY:
        numLetters = 7;
        break;
    default:
        numLetters = 0;
}

// Java 12 简化的 switch 表达式
int numLetters = switch (day) {
    case MONDAY, FRIDAY, SUNDAY -> 6;
    case TUESDAY -> 7;
    default -> 0;
};

注意:使用预览特性需在编译和运行时添加参数:

代码语言:javascript
复制
javac --enable-preview -source 12 Example.java
java --enable-preview Example
2. 数字格式化(CompactNumberFormat

新增 java.text.CompactNumberFormat 类,支持将大数字格式化为紧凑形式(如 “1K” 表示 1000):

代码语言:javascript
复制
import java.text.NumberFormat;
import java.util.Locale;

public class CompactNumberExample {
    public static void main(String[] args) {
        // 美国 locale 示例
        NumberFormat nf = NumberFormat.getCompactNumberInstance(
            Locale.US, NumberFormat.Style.SHORT
        );
        System.out.println(nf.format(1000));   // 输出 "1K"
        System.out.println(nf.format(1500000)); // 输出 "1.5M"
        
        // 中文 locale 示例
        NumberFormat cnNf = NumberFormat.getCompactNumberInstance(
            Locale.CHINA, NumberFormat.Style.SHORT
        );
        System.out.println(cnNf.format(10000)); // 输出 "1万"
    }
}
3. Teeing 收集器(Stream API 增强)

Collectors.teeing() 允许对 Stream 进行两次不同的收集操作,并将结果合并:

代码语言:javascript
复制
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class TeeingExample {
    public static void main(String[] args) {
        // 计算列表中数字的总和与平均值
        var result = Stream.of(1, 2, 3, 4, 5)
            .collect(Collectors.teeing(
                Collectors.summingInt(n -> n),          // 第一个收集器:求和
                Collectors.averagingInt(n -> n),        // 第二个收集器:求平均值
                (sum, avg) -> "Sum: " + sum + ", Avg: " + avg  // 合并结果
            ));
        
        System.out.println(result); // 输出 "Sum: 15, Avg: 3.0"
    }
}
4. 微基准测试工具(JMH 集成简化)

Java 12 简化了 JMH(Java Microbenchmark Harness)的使用,可直接通过 jdk.incubator.benchmark 模块编写基准测试:

代码语言:javascript
复制
import jdk.incubator.benchmark.Benchmark;
import jdk.incubator.benchmark.BenchmarkLoop;

public class MyBenchmark {
    @Benchmark
    public void testMethod() {
        // 待测试的代码
        int sum = 0;
        for (int i = 0; i < 1000; i++) {
            sum += i;
        }
    }

    public static void main(String[] args) {
        BenchmarkLoop.run(MyBenchmark.class);
    }
}

运行时需添加模块依赖:

代码语言:javascript
复制
java --add-modules jdk.incubator.benchmark MyBenchmark.java
三、其他实用改进

默认 CDN 加速:JDK 内部资源加载默认使用 CDN 加速,提升网络资源获取效率。

JVM 优化

  • 新增 Shenandoah 垃圾收集器(实验性),旨在低延迟回收大堆内存。
  • 改进 G1 收集器,支持并行 Full GC,提升大型应用性能。

单文件程序运行:延续 Java 11 的特性,可直接运行 .java 文件(无需先编译):

代码语言:javascript
复制
java MyProgram.java
四、注意事项
  1. 预览特性:Java 12 中的 switch 表达式等预览特性需显式启用(--enable-preview),且可能在后续版本中修改。
  2. 兼容性:Java 12 保持对 Java 8 及以上版本的向后兼容,但部分内部 API 可能被标记为弃用。
  3. 生命周期:作为非 LTS 版本,Java 12 仅提供短期支持,生产环境建议使用 LTS 版本(如 Java 11、17)。

通过以上内容,你可以快速上手 Java 12 并体验其新特性。如需深入学习,建议参考 Oracle 官方文档 或相关技术博客。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-11-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、环境配置
    • 1. 下载与安装
  • 二、Java 12 核心新特性及示例
    • 1. Switch 表达式(预览特性)
    • 2. 数字格式化(CompactNumberFormat)
    • 3. Teeing 收集器(Stream API 增强)
    • 4. 微基准测试工具(JMH 集成简化)
  • 三、其他实用改进
  • 四、注意事项
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档