我的编程空间,编程开发者的网络收藏夹
学习永远不晚

从Java 9 到 Java 17之Java 12

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

从Java 9 到 Java 17之Java 12

上一篇说完了Java11,本篇接着说一下Java12.Java 12 对开发者有用的特性并不是特别多,不过实用性还是有的

字符串增强

Java 12 进一步对字符串操作进行增强,增加了两个方法。

字符串缩进

String indent(int n) 会根据参数n对字符串进行缩进。具体的规则是

  • 当n>0时,会在字符串的每一行开头插入n个空格,字符串整体右移。
  • 当n<0时,会在字符串的每一行开头删除n个空格,如果实际的空格数小于n,删除该行所有空格,但是并不会换行。

来实验一下:

  1. String text = " Hello \n Java12"
  2.         System.out.println("缩进前"); 
  3.         System.out.println(text); 
  4.         System.out.println("右缩进俩字符"); 
  5.         String indent2 = text.indent(2); 
  6.         System.out.println(indent2); 
  7.         System.out.println("左边缩进仨字符,但是实际只有一个空格位"); 
  8.         String indent3 = text.indent(-3); 
  9.         System.out.println(indent3); 

对应的结果是:

字符串缩进

字符串转换

String增加了一个transform方法,将字符串操作函数化。

  1.  R transform(Function f) 

目的是加强字符串的函数操作。举个例子:

  1. String txt = "hello "
  2.        // hello hello 
  3.        String s = txt.transform(str -> str.repeat(2)); 

Java的每一个版本都在加强函数式编程。

基于内容的文件匹配

Java 12 在Files工具类中增加了一个新的静态方法Files.mismatch(Path,Path),用来找两个文件内容(byte)不一样的地方,返回两个文件内容中第一个不匹配字节的位置,如果没有不匹配,则返回-1L 。

  1. // 文件对比 
  2. Path p1 = Files.createTempFile("file1""txt"); 
  3. Path p2 = Files.createTempFile("file2""txt"); 
  4. Files.writeString(p1, "felord.cn"); 
  5. Files.writeString(p2, "felord.cn"); 
  6. // -1L 二者内容相同 
  7. long mismatch = Files.mismatch(p1, p2); 

该方法和另外一个方法Files.isSameFile(Path, Path)的效果有点类似,但是还是有区别的。

两者的差异

Collectors::teeing

对Stream流的聚合操作Collector进一步增强,增加了teeing操作来实现一些复杂的聚合操作。举个例子,我如果想统计一个数组的平均数在总和的占比,首先要计算平均数,然后再计算总和,然后再相除,这样需要三个步骤。

  1. Double average = Stream.of(1, 2, 3, 4, 5).collect(Collectors.averagingDouble(i -> i)); 
  2. Double total = Stream.of(1, 2, 3, 4, 5).collect(Collectors.summingDouble(i -> i)); 
  3. Double percentage = average / total; 

用了teeing之后就可以一步完成:

  1. Double meanPercentage = Stream.of(1, 2, 3, 4, 5) 
  2.         .collect(Collectors.teeing( 
  3.                 Collectors.averagingDouble(i -> i), 
  4.                 Collectors.summingDouble(i -> i), 
  5.                 (average, total) -> average / total)); 

新的数字格式化

Java 12 引入了新的基于区域的紧凑型数字化格式类CompactNumberFormat,用来对长数字进行简写。通常程序员喜欢把工资区间标为10k-20k,而其它一些行业喜欢10000-20000。

  1. NumberFormat chnFormat = NumberFormat.getCompactNumberInstance(Locale.CHINA, 
  2.         NumberFormat.Style.SHORT); 
  3. chnFormat.setMaximumFractionDigits(3); 
  4. // 8.232万 
  5. String cformat = chnFormat.format(82323); 
  6.  
  7. NumberFormat usFormat = NumberFormat.getCompactNumberInstance(Locale.US, 
  8.         NumberFormat.Style.SHORT); 
  9. usFormat.setMaximumFractionDigits(3); 
  10. // 82.323K 
  11. String uformat = usFormat.format(82323); 

你还可以自定义CompactNumberFormat来实现个性化的数字格式化。

其它

 

除了上面以外,Java12还有一些预览属性和JVM增强功能,并没有太多的亮点。

 

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

从Java 9 到 Java 17之Java 12

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

从Java 9 到 Java 17之Java 12

Java 12 引入了新的基于区域的紧凑型数字化格式类CompactNumberFormat,用来对长数字进行简写。通常程序员喜欢把工资区间标为10k-20k,而其它一些行业喜欢10000-20000。

从Java 9 到 Java 17之 Java 11

Java 11是自Java 8以来的又一个LTS版本,是目前全球使用最多的LTS版本之一。今天我们接着在Java 9 到 Java 17系列文章中来认识针对普通开发者的Java 11。

从 Java 9 到 Java 17 之 Java 10

Java 10的性能也明显加强了,支持G1并行垃圾收集。另外引入了即时编译技术(JIT),该技术可以加速java程序的运行速度。另外Java 10对容器集成也进行了优化,JVM会根据容器的配置进行选择CPU核心数量和内存占用。

从Java 9 到 Java 17之Java 13

Java 13在2019年9月发布,这个版本引入的正式可用特性几乎没有,是我认为最无聊的版本之一。所以我们跳过Java 13直接来看Java 14吧。

从 Java 11 迁移到 Java 17 值得吗?

Java17中所做的所有改进都传达了一个信息:是时候切换到这个版本了。过渡承诺语法更简洁,性能得到提高。你的项目将获得安全性、灵活性和更好的错误消息。如果你已经迁移到Java11,那么迁移到Java17 会很顺利。
Java17LTSJava112024-11-30

Java之怎么实现从Map到HashMap

本篇内容主要讲解“Java之怎么实现从Map到HashMap”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java之怎么实现从Map到HashMap”吧! 一、 Map1.1 Map 接口在 J
2023-06-15

十分钟从Java 8到Java 15

我将展示每个Java版本的至少一项重大改进,一直到2020年秋季发布的Java 15都有。
Java8Java15Java2024-12-03

【Java从0到1学习】13 Java IO流

1. 流 1.1 流的概念 流(stream)的概念源于UNIX中管道(pipe)的概念。在UNIX中,管道是一条不间断的字节流,用来实现程序或进程间的通信,或读写外围设备、外部文件等。 一个流,必有源端和目的端,它们可以是计算机内存的某
2023-08-30

我把springboot项目从Java 8 升级 到了Java 17 的过程总结,愿为君提前踩坑!

项目从jdk8升级到jdk17,我不是为了追求java 17的新特性(准确来说也还没有去了解有什么新特性),也不是为了准确与时俱进,永远走在java行列的最前端,纯粹因为项目需要,因为我们都知道,只要项目能跑,你就不要动它! 目
我把springboot项目从Java 8 升级 到了Java 17 的过程总结,愿为君提前踩坑!
2023-12-23

大多数 Java 开发者计划在明年内过渡到 Java 17

JRebel 发布了最新的 2022 Java 开发人员生产力报告。探讨了 2022 年 Java 开发人员调查的结果,并详细说明了 Java 开发的最大趋势如何影响从技术选择到部署和提交时间的方方面面。

Java EJB从入门到精通的进阶之路

探索 Java EJB:从初学者到专家的进阶指南
Java EJB从入门到精通的进阶之路
2024-02-20

Java数据结构之LinkedList从链表到实现

LinkedList是Java中常用的数据结构之一,实现了链表的特性,支持快速添加、删除元素,可以用于实现队列、栈、双向队列等数据结构。LinkedList的内部实现采用了双向链表,其中每个节点都包含前驱节点和后继节点的引用,可以直接访问链表的头尾元素
2023-05-18

从 Java 锁到分布式锁

在并发编程中常用到 synchronized 以及 ReentrantLock 锁,在业务开发过程中也可能会用到分布式锁,分布式锁常用框架的就是基于 Redis 实现的分布式锁框架 Redisson 和 基于 Zookeeper 实现的分布

Java JMX 进阶指南:从新手到大师之路

Java 管理扩展 (JMX) 在监控和管理 Java 应用程序方面发挥着至关重要的作用。本指南将带您踏上从 JMX 新手到大师的进阶之路,深入探索其概念、配置和高级用法。
Java JMX 进阶指南:从新手到大师之路
2024-02-19

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录