java jdk设置字符集

Java的String类似乎将在JDK 11中获得一些新方法,该方法将于2018年9月发布。

错误号

错误标题

新的String方法

描述

JDK-8200425

字符串::行

lines()

“使用专用的分隔符从源字符串中懒散地提供行的字符串实例方法。”

JDK-8200378

String :: strip,String :: stripLeading,String :: stripTrailing

strip()

trim()的 “ Unicode感知”演变

stripLeading()

“从一开始就删除Unicode空白”

stripTrailing()

“从……端删除Unicode空白”

JDK-8200437

字符串:: isBlank

isBlank()

“如果字符串为空或仅包含空格,则返回true的实例方法”

可以在core-libs-dev邮件列表上的请求“ 兼容性和规范审查 ”(CSR)的消息中找到与这些方法有关的进展证据:

这五个新方法中的四个的一个共同特征是,它们使用与旧方法(例如String.trim())不同的(较新的)“空白”定义。 错误JDK-8200373 [“ String :: trim JavaDoc应该澄清空间的含义”]甚至针对String.trim()方法( 邮件列表查看请求 )解决了这个问题:


当前针对String :: trim的JavaDoc并未明确说明代码中使用了哪个“空格”定义。 随着不久的将来会出现其他使用不同空间定义的修整方法,因此有必要进行澄清。 String :: trim使用空格的定义作为小于或等于空格字符代码点(\ u0040)的任何代码点。较新的修整方法将使用(空格)的定义作为任何传递给参数时返回true的代码点。字符:: isWhitespace谓词。

JDK 1.1中将isWhitespace(char)方法添加到Character中 ,但是直到JDK 1.5才将isWhitespace(int)方法引入Character类中。 添加了后一种方法(该方法接受一个int类型的参数)以支持补充字符针对Character类Javadoc注释定义了补充字符 (通常以基于int的“代码点”为模型)与BMP字符 (通常以单个字符为模型):


从U + 0000到U + FFFF的字符集有时被称为基本多语言平面(BMP) 。 代码点大于U + FFFF的字符称为补充字符 。 Java平台在char数组以及StringStringBuffer类中使用UTF-16表示形式。 在此表示形式中,补充字符表示为一对char值...因此, char值表示基本多语言平面(BMP)代码点,包括替代代码点或UTF-16编码的代码单元。 一个int值表示所有Unicode代码点,包括补充代码点。 仅接受char值的方法不能支持补充字符。 接受int值的方法支持所有Unicode字符,包括补充字符。

粗体 ,以强调“ 代码点 ”的重要性,“ 代码点在Java上下文中定义为 “可以在编码字符集中使用的值”。 在JDK 11中为String提出的五个新方法中,有四个在很大程度上依赖于Character.isWhitespace(int)包含的概念来确定如何“修剪”给定的字符串或确定给定的字符串是否“空白”。

说到Unicode,还建议将 JEP 327 [“ Unicode 10”] 添加到JDK 11中。 正如JEP所说,其目的是“升级现有平台API以支持Unicode标准 10.0版 。” 对于任何希望使用此新版本支持的“ 56个新 表情符号字符”的人来说,这将是一个特别令人振奋的消息。

结论

当前针对JDK 11提出的String新方法提供了一种更一致的方法来处理字符串中的空白,从而可以更好地处理国际化;提供了仅在字符串开头或字符串结尾处修剪空白的方法,并提供了专门用于原始字符串文字的方法 。