Character 類的方法和數據是經過 UnicodeData 文件中的信息定義的
char 數據類型(和 Character 對象封裝的值)基於原始的 Unicode 規範
提供的方法和數據也是基於Unicode規範來的
|
他將字符定義爲固定寬度的 16 位實體,也就是隻能表示一個代碼單元
而Unicode也多是有兩個代碼單元組成
也就是一個代碼單元可能完整的表示了一個代碼點,也多是一個代碼點的一部分
|
除非你真的有必要對UTF-16中的代碼單元進行操做,
不然最好不要在程序中使用char類型的緣由
緣由很簡單,一個char並不必定可以表明一個字符,可能只是一半字符
|
無符號二進制形式表示 char 值的位數 | public static final int SIZE = 16; |
無符號二進制形式表示 char 值的字節數 | public static final int BYTES = SIZE / Byte.SIZE; |
表示基本類型 char 的 Class 實例 | public static final Class<Character> TYPE = (Class<Character>) Class.getPrimitiveClass("char"); |
常量值是 char 類型的最小值,即 '\u0000' | public static final char MIN_VALUE = '\u0000'; |
常量值是 char 類型的最大值,即 '\uFFFF' | public static final char MAX_VALUE = '\uFFFF' |
Unicode代碼點的最小值 | public static final int MIN_CODE_POINT = 0x000000; |
Unicode代碼點的最大值 | public static final int MAX_CODE_POINT = 0X10FFFF; |
UTF-16 編碼中的 Unicode 高代理項代碼單元的最小值 | public static final char MIN_HIGH_SURROGATE = '\uD800'; |
UTF-16 編碼中的 Unicode 高代理項代碼單元的最大值 | public static final char MAX_HIGH_SURROGATE = '\uDBFF'; |
UTF-16 編碼中的 Unicode 低代理項代碼單元的最小值 | public static final char MIN_LOW_SURROGATE = '\uDC00' |
UTF-16 編碼中的 Unicode 低代理項代碼單元的最大值 | public static final char MAX_LOW_SURROGATE = '\uDFFF' |
代理項的最小值 也就是高代理項的最小值 |
public static final char MIN_SURROGATE = MIN_HIGH_SURROGATE; |
代理項的最大值 也就是低代理項的最大值 |
public static final char MAX_SURROGATE = MAX_LOW_SURROGATE; |
增補代碼點的最小值 也就是除了0號平面的第一個值 |
public static final int MIN_SUPPLEMENTARY_CODE_POINT = 0x010000 |
可用於與字符串相互轉換的最大基數 | public static final int MAX_RADIX = 36; |
可用於與字符串相互轉換的最小基數 | public static final int MIN_RADIX = 2 |
Character(char) | 只有一種形式的構造方法 直接設置value的值 ![]() |
compare(char, char) | ![]() 看起來可能會有人以爲奇怪,怎麼還能直接減法? 其實char不就是一個UTF-16的代碼單元麼,他不就是一個十六進制數麼 以下圖所示,0x0058 - 0x002B 獲得的值的十進制就是45 ![]() 比較的也就是先後順序了 |
compareTo(Character) | 實例方法 藉助於靜態方法 ![]() |
public static int toChars(int codePoint, char[] dst, int dstIndex) |
保存到指定的數組的指定位置 若是0號平面內 dst[dstIndex] 中存儲相同的值,並返回 1 若是輔助平面 dst[dstIndex]高代理 dst[dstIndex+1]低代理返回2 |
public static char[] toChars(int codePoint) |
返回一個char數組保存指定代碼點 |
public static int offsetByCodePoints(char[] a,
int start,
int count,
int index,
int codePointOffset)
|
public static int offsetByCodePoints(CharSequence seq,
int index,
int codePointOffset)
|
public static int codePointAt(char[] a, int index)
|
public static int codePointAt(CharSequence seq, int index)
|
public static int codePointAt(char[] a, int index, int limit )
|
public static int codePointBefore(CharSequence seq,int index)
|
public static int codePointBefore(char[] a, int index)
|
public static int codePointBefore(char[] a, int index, int start )
|
toLowerCase(char)
toLowerCase(int)
|
toUpperCase(char)
toUpperCase(int)
|
toTitleCase(char)
toTitleCase(int)
|
public static char highSurrogate(int codePoint) | 返回代碼點的高代理 若是不是輔助平面的字符,返回未知char |
public static char lowSurrogate(int codePoint) | 返回代碼點的低代理 若是不是輔助平面的字符,返回未知char |
public static boolean isSurrogate(char ch) | 是否代理部分 |
public static boolean isSurrogatePair(char high, char low) | 是不是代理對 |
public static boolean isHighSurrogate(char ch) | 是不是高代理 |
public static boolean isLowSurrogate(char ch) | 是不是低代理 |
public static boolean isValidCodePoint(int codePoint) | 是不是合法的代碼點 肯定指定的代碼點是否爲從 0x0000 到 0x10FFFF 範圍以內的有效 Unicode 代碼點值 |
public static boolean isBmpCodePoint(int codePoint) | 是否位於0號平面,是的話就可使用一個char表示了 |
public static boolean isSupplementaryCodePoint(int codePoint) | 是否位於輔助平面 輔助平面必然須要使用兩個char |
public static int toCodePoint(char high,char low)
將指定的代理項對轉換爲其增補代碼點值。該方法沒有驗證指定的代理項對
若有必要,調用者必須使用 isSurrogatePair 驗證它
就是高代理 低代理的合併
|
小寫?
isLowerCase(char)
isLowerCase(int)
|
大寫?
isUpperCase(char)
isUpperCase(int)
|
首字母大寫?
isTitleCase(char)
isTitleCase(int)
|
數字?
isDigit(char)
isDigit(int)
|
被定義爲 Unicode 中的字符?
isDefined(char)
isDefined(int)
|
字母?
isLetter(char)
isLetter(int)
|
字母或數字?
isLetterOrDigit(char)
isLetterOrDigit(int)
|
是否可以做爲 Java 標識符中的首字符?
isJavaIdentifierStart(char)
isJavaIdentifierStart(int)
|
是否可以做爲 Java 標識符中的首字符之外的字符?
isJavaIdentifierPart(char)
isJavaIdentifierPart(int)
|
是否容許做爲 Unicode 標識符中的首字符?
isUnicodeIdentifierStart(char)
isUnicodeIdentifierStart(int)
|
是否容許做爲 Unicode 標識符中的首字符之外的字符?
isUnicodeIdentifierPart(char)
isUnicodeIdentifierPart(int)
|
是不是 Java 標識符或 Unicode 標識符中可忽略的一個字符?
isIdentifierIgnorable(char)
isIdentifierIgnorable(int)
|
空白字符?
isSpaceChar(char)
isSpaceChar(int)
|
Java 標準是否爲空白字符?
isWhitespace(char)
isWhitespace(int)
|
ISO 控制字符?
isISOControl(char)
isISOControl(int)
|
字母? isAlphabetic(int) |
中日越韓文字? isIdeographic(int) |
依據 Unicode 規範是否對稱?
isMirrored(char)
isMirrored(int)
|
UPPERCASE_LETTER LOWERCASE_LETTER TITLECASE_LETTER MODIFIER_LETTER OTHER_LETTER LETTER_NUMBER
|
UPPERCASE_LETTER LOWERCASE_LETTER TITLECASE_LETTER MODIFIER_LETTER OTHER_LETTER
|
返回使用指定基數的 字符 ch/Unicode 代碼點 的數值 |
public static int digit(char ch, int radix)
public static int digit(int codePoint, int radix)
|
肯定使用指定基數的特定數字的字符表示形式 | public static char forDigit(int digit, int radix) |
返回給定字符的 Unicode 方向屬性 |
public static byte getDirectionality(char ch)
public static byte getDirectionality(int codePoint)
|
返回指定的 Unicode 字符/Unicode 代碼點 表示的int值 |
public static int getNumericValue(char ch)
public static int getNumericValue(int codePoint)
|
返回指定字符codePoint的Unicode名稱,若是代碼點未被分配,則返回null | public static String getName(int codePoint) |