新闻详细
新闻当前位置:新闻详细

java正则表达式,Java 22 正式发布

专业编程培训机构——完成蜕变以后轻松拿高薪

电话+V: 152079-09430 ,欢迎咨询java整型的正则表达式,[python实用课程],[C++单片机原理],[C#网站搭建],[Nodejs小程序开发],[ios游戏开发],[安卓游戏开发],[教会用大脑用想法赚钱实现阶层跨越]

一、java正则表达式

1、Java正则表达式:

正则表达式定义了字符串的模式。正则表达式可以用来搜索、编辑或处理文本。正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别。

2、正则表达式实例

一个字符串其实就是一个简单的正则表达式,例如HelloWorld正则表达式匹配HelloWorld字符串。.(点号)也是一个正则表达式,它匹配任何一个字符如:a或1。

3、java.util.regex包主要包括以下三个类:

(1)Pattern类:

pattern对象是一个正则表达式的编译表示。Pattern类没有公共构造方法。要创建一个Pattern对象,你必须首先调用其公共静态编译方法,它返回一个Pattern对象。该方法接受一个正则表达式作为它的第一个参数。

(2)Matcher类:

Matcher对象是对输入字符串进行解释和匹配操作的引擎。与Pattern类一样,Matcher也没有公共构造方法。你需要调用Pattern对象的matcher方法来获得一个Matcher对象。

(3)PatternSyntaxException:

二、java中怎么用正则表达式表示数字,包括整数,小数等

java表示整数和小数的正则表达式^[+-]?\\\\d+(\\\\.\\\\d+)?$。

Java22正式发布

InfoQ

2024-03-2013:10发布于北京InfoQ官方账号

+关注

作者|MichaelRedlich\t\t\t译者|张卫滨策划|Tina\t今天,Oracle发布了JDK22,包含12项新特性,可以分为四类,即核心Java库、Java语言规范、HotSpot和Java工具。该公司还热衷于吸引新开发人员的关注,部分方法是改进对VisualStudioCode(VSCode)的支持。

JDK22是一个特性版本,这意味着Oracle将为其提供6个月的支持,直到下一个特性版本发布。LTS版本(例如JDK21)则可获得长达8年的支持。下一个LTS版本将是Java25,计划于2025年9月发布。

Oracle宣称Java是“当今科技趋势的排名第一语言”,并且它是“排名第一的企业/IT组织使用语言”。据Oracle称,目前有630亿个活跃的Java虚拟机(JVM)和410亿个基于云的JVM正在使用。

这些新特性中,有六个新特性归类在核心Java库下:

JEP454:外部函数和内存API(ForeignFunctionMemoryAPI)

JEP457:类文件API(Class-FileAPI,预览)

JEP460:向量API(VectorAPI,第七轮孵化)

JEP461:流聚合器(StreamGatherers,预览)

JEP462:结构化并发(StructuredConcurrency,第二轮预览)

JEP464:作用域值(ScopedValues,第二轮预览)

四个新特性归类在Java语言规范下:

JEP447:super(...)前导语句(Statementsbeforesuper(...),预览)

JEP456:未命名变量和模式(UnnamedVariablesPatterns)

JEP459:字符串模板(StringTemplates,第二轮预览)

JEP463:隐式声明类和实例主方法(ImplicitlyDeclaredClassesandInstanceMainMethods,第二轮预览)一个新特性归类在HotSpot下:

JEP423:G1的区域锚定(RegionPinningforG1)

最后,还有一个新特性归类在Java工具下:

JEP458:启动多文件源码程序(LaunchMulti-FileSource-CodePrograms)我们对其中的一些新特性进行研究,并将其归类到四个主要的Java项目中,即Amber、Loom、Panama和Valhalla,这些项目旨在通过精巧的合并,孵化一系列组件,以便最终将其纳入到JDK中。

\t\tAmber项目\tJEP463,隐式声明类和实例主方法(ImplicitlyDeclaredClassesandInstanceMainMethods,第二轮预览),以前被称为未命名类和实例主方法(UnnamedClassesandInstanceMainMethods,预览)、灵活主方法和匿名主类(FlexibleMainMethodsandAnonymousMainClasses,预览)和隐式类和增强的主方法(ImplicitClassesandEnhancedMainMethods,预览),该JEP包含了对前一轮预览反馈的增强,即JEP445,未命名类和实例主方法(预览)。这个JEP建议“演进Java语言,这样学生们就可以编写他们的第一个程序,而不需要理解为大型程序所设计的语言特性”。这篇JEP延续了甲骨文的Java语言架构师BrianGoetz在2022年9月发表的博客文章Pavingtheon-ramp。甲骨文的技术顾问GavinBierman已经发布了规范文档的初稿,供Java社区审查。关于JEP445的更多细节可以在InfoQ的新闻报道中找到。

JEP459,字符串模板(StringTemplates,第二轮预览),提供了对第一轮预览的再次预览,即JDK21交付的JEP430,字符串模板(StringTemplates,预览)。这个特性通过字符串模板对Java编程语言进行了增强,字符串模板是包含嵌入式表达式的字符串常量,可以在运行时进行解释,嵌入的表达式将在运行时进行计算和校验。关于JEP430的更多详细信息可以参见InfoQ的新闻报道。

JEP456,未命名变量和模式(UnnamedVariablesPatterns),建议在上一轮的预览后最终确定该特性,即JDK21交付的JEP443,未命名模式和变量(UnnamedPatternsandVariables,预览)。这个特性建议“用未命名的模和未命名变量来增强语言,前者与记录组件相匹配,但无需说明组件的名称和类型,后者可以被初始化但不使用”。这两者均由下划线字符表示,如rinstanceof_(intx,inty)和rinstanceof_。

JEP447,super(...)前导语句(Statementsbeforesuper(...),预览),该JEP建议允许构造函数中不引用正在创建的实例的语句出现在this()或super()调用之前,并保留现有的安全性和初始化保证。Bierman提供了该特性的初始规范,供Java社区评审和反馈。

\t\tLoom项目\tJEP464,作用域值(ScopedValues,第二次预览),以前被称为范围局部变量(Extent-LocalVariables,孵化),这个JEP建议在JDK22中进行第二轮预览,不做任何更改,以便于从上一轮预览中获得额外的经验和反馈,即JDK21交付的JEP446,作用域值(预览)和JDK20交付的作用域值(孵化)。该特性允许在线程内部和线程之间共享不可变数据。这种方式优于thread-local变量,特别是在使用大量虚拟线程的时候。

JEP462,结构化并发(StructuredConcurrency,第二次预览),这个JEP将提议进行第二轮预览,不做任何变更,以便于从上一轮预览中获取更多的反馈,即JDK21交付的JEP453,结构化并发(StructuredConcurrency,预览)。这个特性通过引入结构化并发性来简化并发编程,“将在不同线程中运行的相关任务组视为单个工作单元,从而简化错误处理和取消,提高可靠性并增强可观测性。”

\t\tPanama项目\tJEP460,VectorAPI(第七轮孵化),吸收了对前六轮孵化反馈的改进,即JDK21交付的JEP448,VectorAPI(第六轮孵化)、JDK20交付的JEP438,VectorAPI(第五轮孵化)、JDK19交付的JEP426,VectorAPI(第四轮孵化)、JDK18交付的JEP417,VectorAPI(第三轮孵化)、JDK17交付的JEP414,VectorAPI(第二轮孵化)以及在JDK16中以孵化器模块交付的JEP338,VectorAPI(孵化)。JEP448最重要的变更包括对JVM编译器接口(JVMCompilerInterface,JVMCI)的增强,以支持VectorAPI值。

JEP454,外部函数和内存API(ForeignFunctionMemoryAPI),建议在经历了两轮孵化和三轮预览之后确定该特性,即JDK17中交付的JEP412,外部函数和内存API(ForeignFunctionMemoryAPI,孵化器)、JDK18中交付的JEP419,外部函数和内存API(ForeignFunctionMemoryAPI,第二轮孵化)、JDK19中交付的JEP424,外部函数和内存API(ForeignFunctionMemoryAPI,预览)、JDK20中交付的JEP434,外部函数和内存API(ForeignFunctionMemoryAPI,第二轮预览)和JDK21中交付的JEP442,外部函数和内存API(ForeignFunctionMemoryAPI,第三轮预览)。自上一个版本以来的改进包括:新的Enable-Native-Accessmanifest属性,允许可执行JAR包中的代码调用受限制的方法而无需使用--enable-native-access标志;允许客户端通过编程的方式构建C函数描述符,避免使用特定于平台的常量;改进了对本地内存中可变长度数组的支持;支持多字符集本地字符串。关于JEP454的更多细节请参见InfoQ的新闻报道。

\t\tJDK23\tJDK23计划于2024年9月正式发布,目前只有一个JEP列入了目标之中。不过,根据一些候选和草案JEP,尤其是那些已提交的JEP,我们可以推测还有哪些JEP可能被纳入JDK23。

JEP455,模式、instanceof和switch中的原始类型(PrimitiveTypesinPatterns,instanceof,andswitch,预览)已经成为JDK23的Targeted状态。该JEP位于Amber项目下,建议通过允许在所有模式上下文中使用原始类型来增强模式匹配,并扩展instanceof和switch以允许使用原始类型。甲骨文公司的核心技术人员AggelosBiboudis最近发布了该功能的最新规范草案。

JEP468,派生记录创建(DerivedRecordCreation,预览),已经从JDKDraft8321133提升到了Candidate状态。该JEP建议通过派生创建记录来增强Java语言。由于记录是不可变的对象,开发人员经常会根据旧记录创建新记录,以建立新数据模型。派生创建可从现有记录派生出新记录,只需指定不同的组件即可,从而简化代码编写。

JEP467,Markdown文档注释(MarkdownDocumentationComments),已经从JDKDraft8316039提升到了Candidate状态。该特性建议支持JavaDoc文档注释以Markdown格式编写,而不仅仅是HTML和JavaDoc@标记的混合体。这将使文档注释更易于编写,也更易于以源代码形式阅读。

JEP466,类文件API(Class-FileAPI,第二轮预览),已经从JEPDraft8324965状态提升到了Candidate状态。该JEP建议进行第二轮的预览,以便于获取上一轮预览的反馈,也就是JDK22即将交付的JEP457,类文件API(Class-FileAPI,预览)。该特性提供了一个API来解析、生成和转换Java类文件。它最初作为JDK中ASM的替代品,ASM是一个Java字节码操作和分析框架,并计划将其作为公开API对外开放。甲骨文的Java语言架构师BrianGoetz将ASM描述为“带有大量遗留包袱的旧代码库”,并提供了关于该草案如何发展并最终取代ASM的背景信息。

JEP465,字符串模板(StringTemplates),已经从JEPDraft8323333状态提升到了Candidate状态。该JEP建议在两轮的预览之后最终确定该特性,也就是JDK22即将交付的JEP459,字符串模板(StringTemplates,第二轮预览)和JDK21交付的JEP430,字符串模板(StringTemplates,预览)。这个特性通过字符串模板对Java编程语言进行了增强,字符串模板是包含嵌入式表达式的字符串常量,可以在运行时进行解释,嵌入的表达式将在运行时进行计算和校验。关于JEP430的更多详细信息可以参见InfoQ的新闻报道。

JEP401,Null-Restricted值对象存储(Null-RestrictedValueObjectStorage,预览),以前被称为原始类(PrimitiveClasses,预览),位于Valhalla项目中,它引入了开发人员声明的原始类(PrimitiveClasses),即由值对象API定义(ValueObjectsAPI)的特殊类型的值类,它们定义了新的原始类型。

甲骨文的Java架构师PaulSandoz提交了JEPDraft8326878,VectorAPI(孵化器)。经历了从JDK16到JDK22的七轮孵化后,本JEP建议在JDK23中重新孵化API,与JDK22相比,不会对API进行更改,也不对实现进行实质性的变更。该特性将引入一个API,用于“表达向量计算,这些计算可在运行时可靠地编译为所支持CPU架构上的最佳向量指令,从而实现优于同等标量计算的性能”。

Bierman和PatientEXP的创始人兼CEOArchieCobbs提出了JEPDraft8325803,灵活的构造函数方法体(FlexibleConstructorBodies,第二轮预览),该JEP建议进行第二轮预览并更改名称,以获取对上一轮预览的反馈,也就是JDK22即将交付的JEP447:super(...)前导语句(Statementsbeforesuper(...),预览)。该特性允许构造函数中不引用正在创建的实例的语句出现在this()或super()调用之前,并保留现有的安全性和初始化保证。该JEP中的变更包括:对本地类的处理;将在显式构造函数调用前不能访问字段的限制进行了放宽,即在显式构造函数调用前不能读取字段的要求。Bierman提供了该特性的初始规范,供Java社区评审和反馈。

JEPDraft8307341,准备限制对JNI的使用(PreparetoRestrictTheUseofJNI),建议限制使用本质上不安全的Java本地接口(JavaNativeInterface,JNI),同时在外部函数和内存(ForeignFunctionMemory,FFM)API中使用受限方法,该API预计将在JDK23中成为最终特性。从JDK23开始,除非FFM用户在命令行上启用了不安全的本地访问,否则Java运行时将显示关于使用JNI的警告。预计在JDK23之后的版本中,使用JNI将抛出异常而非警告。

JEPDraft8313278,Java虚拟机的预先编译(AheadofTimeCompilationfortheJavaVirtualMachine),建议“增强Java虚拟机加载编译为原生代码的Java应用程序和库的能力,以加快启动和基线执行”。

JEPDraft8312611,已计算常量(ComputedConstants,预览),引入了已计算常量的概念,它被定义为最多初始化一次的不可变值持有者。它具有final字段在性能和安全性方面的优势,同时在初始化时机方面具有更大的灵活性。该功能将作为预览API首次亮相。

JEPDraft8283227,JDK源码结构(JDKSourceStructure),这是一个信息型的JEP,描述了JDK源代码的整体布局和结构以及JDK仓库中的相关文件。该JEP建议帮助开发人员适应JDK9中交付的JEP201,ModularSourceCode(模块化源代码)所描述的源代码结构。

JEPDraft8278252,JDK打包和安装指南(JDKPackagingandInstallationGuidelines),这是一个信息型的JEP,建议提供在macOS、Linux和Windows上创建JDK安装程序的指南,以降低不同JDK提供商之间安装JDK发生冲突的风险。其目的是通过规范安装目录名称、软件包名称和安装程序中可能导致冲突的其他元素,使得在安装JDK更新版本时获得更好的体验。

我们预计甲骨文将很快开始为JDK23制定更多JEP。

参考链接:

https://www.infoq.com/news/2024/03/java-22-so-far/

https://www.theregister.com/2024/03/19/catch_java_22_now_available/

声明:本文为InfoQ翻译,未经许可禁止转载。

【FUTURE PROGRAMMING COURSE】尊享对接老板

电话+V: 152079-09430

机构由一批拥有10年以上开发管理经验,且来自互联网或研究机构的IT精英组成,负责研究、开发教学模式和课程内容。公司具有完善的课程研发体系,一直走在整个行业发展的前端,在行业内竖立起了良好的品质口碑。

java整型的正则表达式
Copyright2025未知推广科技