一、前言
除了众所周知的 JEP 之外,Java 21 还有更多内容。首先请确认 java 版本:
$ java -version
openjdk version "21" 2023-09-19
OpenJDK Runtime Environment (build 21+35-2513)
OpenJDK 64-Bit Server VM (build 21+35-2513, mixed mode, sharing)
我们一起来看看 String 和它的朋友们 Collections、Date、Time、HttpClient、并发、Math 和 BigInteger 的新增一些 API。
二、String(Java21新增)
String 新增了 indexOf() 方法,允许在起始索引和结束索引之间查找单个字符或子字符串。
public int indexOf(int ch, int beginIndex, int endIndex);
public int indexOf(String str, int beginIndex, int endIndex);
示例:
String text = "JAVA架构日记-2023-如梦技术";
int index = text.indexOf("0", 5, 15);
三、Character(Java21新增)
Character 类新增了几个方法来支持 Emoji 表情符号,新增了五个方法:isEmoji()
、isEmojiComponent()
、isEmojiModifier()
、isEmojiModifierBase()
和 isEmojiPresentation()
。
public static boolean isEmoji(int codePoint);
public static boolean isEmojiPresentation(int codePoint);
public static boolean isEmojiModifier(int codePoint);
public static boolean isEmojiModifierBase(int codePoint);
public static boolean isEmojiComponent(int codePoint);
public static boolean isExtendedPictographic(int codePoint);
所有这些方法都接受一个 int 类型的码点作为参数,判断传入的码点是否具有对应的表情符号。
四、StringBuffer 和 StringBuilder(Java21新增)
StringBuffer
和 StringBuilder
新增了 repeat()
方法重复单个字符或字符串多次。
StringBuilder:
@Override
public StringBuilder repeat(int codePoint, int count);
@Override
public StringBuilder repeat(CharSequence cs, int count);
StringBuffer:
@Override
public synchronized StringBuffer repeat(int codePoint, int count);
@Override
public synchronized StringBuffer repeat(CharSe