当前位置: 首页 > news >正文

【Java】JDK17新特性

JEP 356:增强型伪随机数生成器

地址:356

JDK 17 之前,我们可以借助 Random、ThreadLocalRandom 和SplittableRandom 来生成随机数。不过,这 3 个类都各有缺陷,且缺少常见的伪随机算法支持。

jdk17中为伪随机数生成器 (PRNG) 提供新的接口类型和实现,包括可跳转 PRNG 和另一类可拆分 PRNG 算法 (LXM)。

提供了一个新的接口RandomGenerator,它为所有现有和新的 PRNG 提供了统一的 API。RandomGenerators 提供了名为 ints、longs、doubles、nextBoolean、nextInt、nextLong 的方法。 nextDouble 和 nextFloat 及其所有当前参数变体。

示例

public static void main(String[] args) {
        // 获取一个类型为  Xoshiro256PlusPlus(Xoroshiro128PlusPlus) 的随机数生成器工厂
        RandomGeneratorFactory<RandomGenerator> factory = RandomGeneratorFactory.of("Xoshiro256PlusPlus");
        // 使用工厂创建一个随机数生成器
        RandomGenerator randomGenerator = factory.create();
        // 生成 10 个随机数
        randomGenerator.ints().limit(10)
                .forEach(System.out::println);
    }

在这里插入图片描述

JEP 406:switch 的模式匹配(预览版)

地址:406

通过 switch 的模式匹配增强 Java 编程语言 表达式和语句,以及对模式语言的扩展。 将模式匹配扩展到 switch 允许针对多个模式测试表达式,每个模式都有一个特定的作,以便可以简洁安全地表示面向数据的复杂查询。

正如 instanceof 一样, switch 也紧跟着增加了类型匹配自动转换功能。
instanceof 代码示例:

public static void main(String[] args) {
        Object object = "jldsfjld";
        //旧
        if (object instanceof String) {
            String s = (String)object;
            System.out.println(s);
        }
        //新
        if (object instanceof String s) {
            System.out.println(s);
        }
    }

switch 代码示例

//旧
public NodeStrategy getJsonStrategy(SvgElementTypeEnum typeEnum) {
        switch (typeEnum) {
            case BackGround:
            case group:
            case Text:
                return drawingBoardStrategy;
            case Image:
                return imageStrategy;
            case SvgImage:
                return iconStrategy;
            default:
                return imageStrategy;
        }
    }

//新
public NodeStrategy getJsonStrategy(SvgElementTypeEnum typeEnum) {
        return switch (typeEnum) {
            case BackGround, group, Text -> drawingBoardStrategy;
            case Image -> imageStrategy;
            case SvgImage -> iconStrategy;
            default -> imageStrategy;
        };
    }

文章转载自:
http://chairone.alwpc.cn
http://adjudgment.alwpc.cn
http://bilinguist.alwpc.cn
http://armomancy.alwpc.cn
http://bodiless.alwpc.cn
http://abiotrophy.alwpc.cn
http://cardfile.alwpc.cn
http://aitken.alwpc.cn
http://axoplasm.alwpc.cn
http://bahuvrihi.alwpc.cn
http://bluefish.alwpc.cn
http://carpetbagger.alwpc.cn
http://bajra.alwpc.cn
http://argos.alwpc.cn
http://bilinguality.alwpc.cn
http://begrime.alwpc.cn
http://arianise.alwpc.cn
http://cenote.alwpc.cn
http://biomagnify.alwpc.cn
http://antimatter.alwpc.cn
http://allseed.alwpc.cn
http://aquiline.alwpc.cn
http://cancrine.alwpc.cn
http://ascendent.alwpc.cn
http://byzantinism.alwpc.cn
http://athletics.alwpc.cn
http://catafalque.alwpc.cn
http://auroral.alwpc.cn
http://angaraland.alwpc.cn
http://capsular.alwpc.cn
http://www.dtcms.com/a/46214.html

相关文章:

  • C++函数重载
  • 大白话React第十一章React 相关的高级特性以及在实际项目中的应用优化
  • 服务器虚拟化:释放计算潜力的魔法
  • Vscode 便用快捷键设置教程
  • 蓝桥杯备考:动态规划入门题目之下楼梯问题
  • YOLOv8目标检测推理流程及C++代码
  • Android6到Android15版本新增的功能和api
  • Docker项目部署-部署前端
  • 深入解析JasperReports模板标签构建高效报表的利器系列一
  • 1985-2019年上市公司绿色专利申请量数据
  • 云服务培训四-网络服务
  • python---‘DataFrame‘ object has no attribute ‘read‘ 报错的解决
  • 牛客周赛83:A:JAVA
  • 面试题:说一下你对DDD的了解?
  • 常用的api测试软件
  • zookeeper-docker版
  • DeepSeek本地部署教程
  • gmock和cppfreemock原理学习
  • Python使用pyobdc库和tkinter框架连接数据库
  • oracle游标为什么没有共享,统计一下原因
  • 水果识别系统 | BP神经网络水果识别系统,含GUI界面(Matlab)
  • 《白帽子讲 Web 安全:点击劫持》
  • Makefile、Make和CMake:构建工具的三剑客
  • 授权与认证之jwt(一)创建Jwt工具类
  • macOS Sequoia 15.3 M3 Pro芯片 iOS 开发环境配置记录(最新)
  • ZYNQ-PL实践课堂(四)IP核之RAM
  • 经验分享:用一张表解决并发冲突!数据库事务锁的核心实现逻辑
  • python 爬虫用bs4 或者叫Beautiful Soup
  • CSS—text文本、font字体、列表list、表格table、表单input、下拉菜单select
  • 关于后端使用Boolean或boolean时前端收到的参数的区别