Android开发刻意练习:每天一张思维导图(IT类)Java

《Java编程的逻辑》笔记28--剖析包装类 (下)/剖析Cha

2019-07-07  本文已影响1人  天一方蓝
28剖析包装类 (下) 剖析Character.png

Character有很多静态方法,封装了Unicode字符级别的各种操作,是Java文本处理的基础,注意不是char级别,Unicode字符并不等同于char

Unicode基础

Unicode给世界上每个字符分配了一个编号,编号范围从0x000000到0x10FFFF。编号范围在0x0000到0xFFFF之间的字符,为常用字符集,称BMP(Basic Multilingual Plane)字符。编号范围在0x10000到0x10FFFF之间的字符叫做增补字符(supplementary character)。

Character静态方法

public static boolean isValidCodePoint(int codePoint) 

小于等于0x10FFFF的为有效,大于的为无效

public static boolean isBmpCodePoint(int codePoint) 

小于等于0xFFFF的为BMP字符,大于的不是

public static boolean isSupplementaryCodePoint(int codePoint)

0x010000和0X10FFFF之间的为增补字符。

public static boolean isHighSurrogate(char ch)

0xD800到0xDBFF为高代理项。
-判断char是否为低代理项:

public static boolean isLowSurrogate(char ch) 

0xDC00到0xDFFF为低代理项。

public static boolean isSurrogate(char ch) 

char为低代理项或高代理项,则返回true。

 public static boolean isSurrogatePair(char high, char low) 
 public static int charCount(int codePoint) 

增补字符返回2,BMP字符返回1。

code point与char的转换

public static int toCodePoint(char high, char low)

这个转换有个公式,这个方法封装了这个公式。

public static char[] toChars(int codePoint) 

如果code point为BMP字符,则返回的char数组长度为1,如果为增补字符,长度为2,char[0]为高代理项,char[1]为低代理项

public static int toChars(int codePoint, char[] dst, int dstIndex) 
public static char lowSurrogate(int codePoint) public static char highSurrogate(int codePoint) 

按code point处理char数组或序列

public interface CharSequence {
    int length();
    char charAt(int index);
    CharSequence subSequence(int start, int end);
    public String toString();
}

它与一个char数组是类似的,有length方法,有charAt方法根据索引获取字符,String类就实现了该接口
计算char索引等......

字符属性

除了分配编号之外,还分配了一些属性,Character类封装了对Unicode字符属性的检查和操作

public static int getType(int codePoint)   
public static int getType(char ch)

Unicode给每个字符分配了一个类型,这个类型是非常重要的,很多其他检查和操作都是基于这个类型的
字符对应


字符对应.png

字符判断,转换的函数......
字符反转等

上一篇 下一篇

猜你喜欢

热点阅读