检查字符是否为补充字符(占用两位代码单元)
Character.isSupplementaryCodePoint(varName) //返回boolean值
现在的 Unicode 已经有 17 个代码平面,每个平面有 65536 个字符,加起来就是 1114112 个字符,2个字节已经无法表示这么多字符了,所以 String 目前使用 char[] 存储 UTF-16 编码,再将 UTF-16 编码转成 Unicode。
UTF-16 是基于 Unicode 的不定长度的字符编码(不定长度是指,有些字符使用 2 个字节表示,有些字符使用 4 个字节表示)。utf-16 的基本单位是 2 个字节,英文名叫 code unit,而真正能表示一个 Unicode 字符的数据(在 utf-16 中可能是 2 个字节也可能是 4 个字节)叫代码点,英文名叫 code point。
原文链接: java中codepoints方法_Java String codePointCount() 方法_合光聚乐的博客-CSDN博客
UTF - 16编码详解 UTF-16编码详解 - 知乎
#
Booth[] booths=new Booth[5]; for(int i=0;i<5;i++){ booths[i]=new Booth(i,"瓜摊"+i,i*5,false); //初始化五个瓜摊 }
数组内的元素也可调用有参构造
int[] codePoints = str.codePoints().toArray(); //使用codepoint方法【以数组形式】将字符串码点【ascii码】输出 String str = new String(codePoints, 0, codePoints.length); //重写方法将码点转换为字符串
StringBuilder builder = new StringBuilder(); builder.append(ch); // appends a single character bui1der.append(str); // appends a string String completedString = builder.toString(); //将多个字符串连成一个
因为输入是可见的,所以 Scanner 类不适用于从控制台读取密码。Java SE 6 特别 引入了 Console 类实现这个目的。要想读取一个密码,可以采用下列代码:
Console cons = System.console(); String username = cons.readLine("User name: "); char[] passwd = cons.readPassword("Password:");
• char charAt (int index) 返回给定位置的代码单元。除非对底层的代码单元感兴趣,否则不需要调用这个 方法。 • int codePointAt(int Index) 5.0 返回从给定位置开始的码点。 • int offsetByCodePoints(int startlndex, int cpCount) 5.0 返回从startlndex 代码点开始,位移cpCount 后的码点索引。 • i n t compareTo(String other) 按照字典顺序,如果字符串位于other 之前,返回一个负数;如果字符串位于other 之 后,返回一个正数;如果两个字符串相等,返回0。 • IntStream codePoints() 8 将这个字符串的码点作为一个流返回。调用toArray 将它们放在一个数组中。 • new String(int[] codePoints, int offset, int count) 5.0 用数组中从offset 开始的count 个码点构造一个字符串。 • boolean equals(0bject other) 如果字符串与other 相等,返回true。
• boolean equalsIgnoreCase( String other ) 如果字符串与other 相等 (忽略大小写),返回 tme。 • boolean startsWith( String prefix ) • boolean endsWith( String suffix ) 如果字符串以 suffix 开头或结尾,则返回 true。 • int indexOf ( String str ) • int indexOf ( String str , int fromlndex ) • int indexOf ( int cp ) • int indexOf ( int cp, int fromlndex ) 返回与字符串str 或代码点cp 匹配的第一个子串的开始位置。这个位置从索引 0 或 fromlndex 开始计算。如果在原始串中不存在 str,返回-1。 • int 1astIndexOf ( String str ) • Int 1 astIndexOf ( Stri ng str , int fromlndex ) • int lastindexOf ( int cp ) • int 1 astindexOf ( int cp, int fromlndex ) 返回与字符串 str 或代码点cp 匹配的最后一个子串的开始位置。这个位置从原始串尾 端或 fromlndex 开始计算。 • int 1ength( ) 返回字符串的长度。
• int codePointCount ( int startlndex , int endlndex ) 5.0 返回startlndex 和endludex-l 之间的代码点数量。没有配成对的代用字符将计入代码点。參 String replace( CharSequence oldString, CharSequence newString) 返回一个新字符串。这个字符串用newString 代替原始字符串中所有的oldString。可 以用String 或StringBuilder 对象作为CharSequence 参数。 • String substring( int beginlndex ) 參 String substring( int beginlndex, int endlndex ) 返回一个新字符串。这个字符串包含原始字符串中从beginlndex 到串尾或endlndex-l 的所有代码单元。 • String toLowerCase( ) 參 String toUpperCase( ) 返回一个新字符串。这个字符串将原始字符串中的大写字母改为小写,或者将原始字 符串中的所有小写字母改成了大写字母。 • String t r i m( ) 返回一个新字符串。这个字符串将删除了原始字符串头部和尾部的空格。 • String join( CharSequence delimiter , CharSequence . .. elements ) 8 返回一个新字符串, 用给定的定界符连接所有元素。
• StringBuilder() 构造一个空的字符串构建器。 • int length() 返回构建器或缓冲器中的代码单元数量。 • Stri ngBui 1 der appencl(Stri ng str) 追加一个字符串并返回this。 • StringBui 1der append(char c) 追加一个代码单元并返回this。 • StringBui 1der appendCodePoint(int cp) 追加一个代码点,并将其转换为一个或两个代码单元并返回this。 • void setCharAt(int i,char c) 将第 i 个代码单元设置为c。 • StringBui 1 der insert(int offset,String str) 在offset 位置插入一个字符串并返回this。 • StringBuilder insert(int offset,Char c) 在offset 位置插入一个代码单元并返回this。 • StringBui 1der delete(1 nt startindex,int endlndex) 删除偏移量从startindex 到-endlndex-1 的代码单元并返回this。 • String toString() 返回一个与构建器或缓冲器内容相同的字符串
摘自java核心卷