Java JDK各版本特性

news2025/1/13 15:59:01

一、Java 8 之前版本重要的特性

        Java 8 之前版本中有一些重要特性和改进。以下是其中一些主要特性以及它们发布版本:

Java SE 7(发布于2011年):

  • Switch 字符串:允许在 switch 语句中使用字符串。
  • 泛型的类型推断:允许在实例化泛型时,不需要重复指定泛型参数类型。
  • 改进的异常处理:引入了多个异常的捕获方式,提供了更灵活的异常处理方法。
  • try-with-resources 语句:简化了资源(如文件、数据库连接等)的打开和关闭操作。

Java SE 6(发布于2006年):

  • 脚本语言支持:通过 JSR 223 实现了与动态语言(如 JavaScript 和 Groovy)的集成。
  • JAXB(Java Architecture for XML Binding):提供了一种通过注解来进行 XML 数据绑定和解析的方式。
  • 集合框架增强:包括新的集合类型(如 Deque 和 NavigableSet)、支持并发访问的集合类等。

Java SE 5(发布于2004年):

  • 泛型类型:引入了泛型,使得可以在类、接口和方法级别上使用类型参数。
  • 增强的 for 循环:简化了集合和数组的遍历操作。
  • 自动装箱和拆箱:允许自动在基本类型和对应的包装类型之间进行转换。
  • 可变参数:允许定义可以接受可变数量参数的方法。
  • 枚举类型:引入了枚举类型,使得可以定义一组有限的命名常量。

二、Java 8 新特性

 以下是一些Java JDK 8 主要版本的特性概述:

  • Lambda 表达式和函数式接口
  • Stream API 进行数据流操作
  • 默认方法(接口的方法可以有默认实现)
  • 新的日期和时间 API(java.time包)

 三、Java 11 新特性

         从 Java 10 开始,便引入了局部变量类型推断(Local Variable Type Inference)这一关键特性。类型推断允许使用关键字 var 作为局部变量的类型而不是实际类型,编译器根据分配给变量的值推断出类型。这一改进简化了代码编写、节省了开发者的工作时间,因为不再需要显式声明局部变量的类型,而是可以使用关键字 var,且不会使源代码过于复杂。

可以使用关键字 var 声明局部变量,如下所示:

var s = "Hello Java 11";
System.out.println(s);

但是在 Java 10 中,还有下面几个限制:

  • 只能用于局部变量上
  • 声明时必须初始化
  • 不能用作方法参数
  • 不能在 Lambda 表达式中使用

        Java 11 与 Java 10 的不同之处在于允许开发者在 Lambda 表达式中使用 var 进行参数声明。乍一看,这一举措似乎有点多余,因为在写代码过程中可以省略 Lambda 参数的类型,并通过类型推断确定它们。但是,添加上类型定义同时使用 @Nonnull 和 @Nullable 等类型注释还是很有用的,既能保持与局部变量的一致写法,也不丢失代码简洁。

  • 字符串新增方法:String类新增了一些实用的方法,如isBlank()用于检查字符串是否为空或只包含空格,strip()用于去除字符串首尾的空格,lines()用于将字符串拆分为行等。
  1. isBlank():用于检查字符串是否为空或只包含空格字符。

    示例: String str = " "; if (str.isBlank()) { // 执行逻辑 }
  2. strip():去除字符串首尾的空格字符。

    示例: String str = " Hello World "; String trimmed = str.strip(); // 返回 "Hello World"
  3. lines():将字符串按行拆分为 Stream<String> 对象。

    示例: String str = "Hello\nWorld\nJava"; Stream<String> lines = str.lines(); lines.forEach(System.out::println); // 输出每行的内容
  • 基于HTTP/2的标准化的HTTP客户端:Java 11引入了一个全新的标准HTTP客户端API,支持HTTP/2协议、异步和响应式操作。

参考:

在线文档-jdk-zh (oschina.net)

在线工具 - ioDraw (matools.com)

Java 11 中文版 - 在线API手册 - 码工具 (matools.com)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/944886.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何提高视频清晰度?视频调整清晰度操作方法

现在很多小伙伴通过制作短视频发布到一些短视频平台上记录生活&#xff0c;分享趣事。但制作的视频有些比较模糊&#xff0c;做视频的小伙伴应该都知道&#xff0c;视频画质模糊不清&#xff0c;会严重影响观众的观看体验。 通过研究&#xff0c;总结了以下几点严重影响的点 …

Opencv-C++笔记 (18) : 轮廓和凸包

文章目录 一、轮廓findContours发现轮廓drawContours绘制轮廓代码 二.几何及特性概括——凸包(Convex Hull)凸包概念凸包扫描算法介绍——Graham扫描算法 相关API介绍程序示例轮廓集合及特性性概括——轮廓周围绘制矩形框和圆形相关理论介绍轮廓周围绘制矩形 -API绘制步骤程序实…

如何使用ADX指标呢?10秒教会你

这是使用ADX大佬的收益结果&#xff0c;这是没有使用ADX技术指标的新手表情&#xff0c;事实证明只要会使用ADX指标&#xff0c;交易的结果就是令人可喜的&#xff0c;那么如何使用ADX指标呢?anzo capital昂首资本10秒教会你。 从评估价格方向、模式和水平开始技术分析。使用…

BingChat与ChatGPT比较,哪个聊天机器人能让你获益更多?

人工智能领域的最新进展为普通人创造新的收入来源提供了更多机会。今年早些时候&#xff0c;微软对OpenAI进行了大量投资。此后&#xff0c;微软在Microsoft Edge浏览器中推出了自家的聊天机器人Bing Chat。 在论坛和社交媒体上&#xff0c;你可以发现这两个AI工具都吸引了很…

C++之ifstream成员函数get、tellg、eof实例(一百八十五)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…

js查找结构不同的两个数组中相同的元素并删除元素

准确的是循环中删除数组元素会遇到的bug及解决办法。 删除后需要注意元素的索引值 &#xff0c;比如以下案例&#xff0c;删除2之后索引值继续 1,但原数组索引已经变化了&#xff0c;所以会出现遍历漏掉元素和索引值对不上的情况 然后就把forEach循环改成了for循环&#xff0…

龙蜥白皮书精选:SysAK—大规模复杂场景的系统运维利器

文/系统运维 SIG 01 概述 SysAK&#xff08;System Analyse Kit&#xff09;是龙蜥社区系统运维 SIG&#xff0c;通过对过往百万服务器运维经验进行抽象总结&#xff0c;而提供的一个全方位的系统运维工具集&#xff0c;可以覆盖系统的日常监控、线上问题诊断和系统故障修复…

Java 中数据结构LinkedList的用法

LinkList 链表&#xff08;Linked list&#xff09;是一种常见的基础数据结构&#xff0c;是一种线性表&#xff0c;但是并不会按线性的顺序存储数据&#xff0c;而是在每一个节点里存到下一个节点的地址。 链表可分为单向链表和双向链表。 一个单向链表包含两个值: 当前节点…

MySQL 日期格式 DATETIME 和 TIMESTAMP

MySQL日期格式介绍 存储日期的方式mysql中存储日期的格式datetimetimestampDatetime和Timestamp的比较相同点&#xff1a;不同点&#xff1a; 数值型时间戳&#xff08;INT&#xff09;DATETIME vs TIMESTAMP vs INT&#xff0c;怎么选&#xff1f; 存储日期的方式 字符串Date…

Kotlin协程简述与上下文和调度器(Dispatchers )

协程概述 子程序或者称为函数&#xff0c;在所有的语言中都是层级调用&#xff0c;如&#xff1a;A调用B&#xff0c;B在执行过程中又调用了C&#xff0c;C执行完毕返回&#xff0c;B执行完毕返回&#xff0c;最后是A执行完毕。所以子程序是 通过栈来实现的&#xff0c;一个线…

Sar测试简介

1.Sar 简介 SAR即英语“Specific Absorption Rate”的缩写。SAR值一般指手机产品中电磁波所产生的热能&#xff0c;它是对人体产生影响的衡量数据&#xff0c;单位是W/Kg&#xff08;瓦/公斤&#xff09; 对于测量手机产品的“SAR”&#xff0c;通俗地讲&#xff0c;就是测量手…

STM32f103入门(4)对射式红外传感器计次(外部中断)

中断:在主程序运行过程中&#xff0c;出现了特定的中断触发条件 (中断源)&#xff0c;使得CPU暂停当前正在运行的程序&#xff0c;转而去处理中断程序处理完成后又返回原来被暂停的位置继续运行中断优先级:当有多个中断源同时申请中断时&#xff0c;CPU会根据中断源的轻重缓急进…

国内的化妆品核辐射检测

化妆品核辐射物质检测是指检测化妆品中的放射性物质&#xff0c;包括放射性核素和放射性同位素。这些放射性物质主要来源于环境中的放射性污染&#xff0c;如空气、水和土壤中的放射性物质&#xff0c;以及化妆品生产过程中的放射性污染&#xff0c;如原料、设备、工艺等。化妆…

如何理解IaaS、PaaS、SaaS?盘点受欢迎的八大SaaS平台!

如何理解IaaS、PaaS、SaaS&#xff1f;他们各自的优势在哪里&#xff1f;我们又应该如何选择&#xff1f;本篇将带大家深入浅出的了解IaaS、PaaS、SaaS&#xff0c;并为大家盘点2023最受欢迎的SaaS平台。 通过本文你将了解&#xff1a; IaaS、PaaS、SaaS分别是什么我们该如何理…

高德地图api给点设置闪烁动画

首先高德提供了点动画两种选择和掉落弹跳&#xff0c;可以在属性中定义也可以setAnimation 但是没闪烁 所以css&#xff0c;遍历所有点标记找到要闪烁的点给一个class在deepcss一个动画 js function setshadow(params) { //获取地图所有点标记let data map.getAllOverlays(&…

Mac下使用Homebrew安装MySQL5.7

Mac下使用Homebrew安装MySQL5.7 1. 安装Homebrew & Oh-My-Zsh2. 查询软件信息3. 执行安装命令4. 开机启动5. 服务状态查询6. 初始化配置7. 登录测试7.1 终端登录7.2 客户端登录 参考 1. 安装Homebrew & Oh-My-Zsh mac下如何安装homebrew MacOS安装Homebrew与Oh-My-Zsh…

在字节划水5年被优化,太无情了...

前言 先简单说下&#xff0c;涵哥是某不知名 985 的本硕&#xff0c;17 年毕业加入字节&#xff0c;以“人员优化”的名义无情被裁员&#xff0c;之后跳槽到了有赞&#xff0c;一直从事软件测试的工作。还差一个月也6年了吧&#xff0c;算是在这行的资深划水员。6年的时间也让…

广告英语翻译的原则,你了解多少

我们知道&#xff0c;广告语的特点是通俗化、口语化&#xff0c;能够吸引读者注意&#xff0c;刺激其消费欲望。因此&#xff0c;广告英语翻译也要具有强烈的感染力&#xff0c;达到其预期功能。那么&#xff0c;如何做好广告英语翻译&#xff0c;关于广告英语翻译的原则&#…

SpringBoot集成JWT token实现权限验证

先在pom中引入 JWT依赖 <!-- JWT --> <dependency><groupId>com.auth0</groupId><artifactId>java-jwt</artifactId><version>4.3.0</version> </dependency> 然后引入一个生成的 token 的工具类 import cn.hutool.c…