文章目錄
1 char 數據類型概述
-
碼點(code point):unicode 字符集中字符對應的數值
-
在Java中,char 數據類型(和 Character 對象封裝的值)基於原始的 Unicode 規範(字符集)
-
char表示 UTF-16 編碼的代碼單元 (code unit)
-
對於0號平面(BMP),一個碼點(code point)對應 1 個 code unit —— 1 個 char 對應一個 unicode 字符集中的字符
-
對於輔助平面,一個 code point 將會對應 2 個 code unit—— 2 個 char 對應一個 unicode 字符集中的字符
2 Character 數據類型概述
- Character在 jdk8中, 基於版本Unicode6.0.2 標準
- Character 類的方法和數據是通過 UnicodeData 文件中的信息定義的
- 此文件指定了各種屬性,其中包括每個已定義 Unicode 代碼點或字符範圍的名稱和常規類別(General category)
- 詳情可查閱 http://www.unicode.org
3 Character 方法簡述
3.1 是否有效 或 爲 Surrogate 類型
返回類型 | 方法名 | 簡述 | 補充 |
---|---|---|---|
static boolean | isValidCodePoint(int var0) | 是否爲有效的codePoint | (var0 >>> 16) < 17 |
static boolean | isBmpCodePoint(int var0) | 是否在第 0 平面 | var0 >>> 16 == 0 |
static boolean | isSupplementaryCodePoint(int var0) | 是否在輔助平面 | var0 >= 0x10000&& var0 < 0x110000; |
static boolean | isHighSurrogate(char var0) | 是否是高代理 | var0 >= ‘\ud800’ && var0 < ‘\udc00’ |
static boolean | isLowSurrogate(char var0) | 是否是低代理 | var0 >= ‘\udc00’ && var0 < ‘\ue000’ |
static boolean | isSurrogate(char var0) | 是否是代理 | 綜上 |
static boolean | isSurrogatePair(char var0, char var1) | 是否是代理對 | isHighSurrogate(var0) && isLowSurrogate(var1) |
3.2 特定下標(之前)的 code point 值
返回類型 | 返回類型方法名 | 簡述 |
---|---|---|
static int | codePointAt(CharSequence seq, int index) | 獲取指定位置的 codePoint |
static int | codePointAt(char[] var0, int var1) | 同上 |
static int | codePointAt(char[] var0, int var1, int var2) | 同上,加範圍限制 |
static int | codePointBefore(CharSequence var0, int var1) | 獲取前一個位置的 codePoint |
static int | codePointBefore(char[] var0, int var1) | |
static int | codePointBefore(char[] var0, int var1, int var2) |
3.3 codepoint 與 surrogate 的轉換
返回類型 | 方法名 | 簡述 |
---|---|---|
static char[] | toChars(int var0) | 將 codePoint 轉爲數組 |
static int | toChars(int var0, char[] var1, int var2) | 保存到數組的指定位置 |
static int | toCodePoint(char var0, char var1) | 將 surrogatePair 合成爲 codePoint,這之前要檢查 surrogatePair 類型 |
static char | highSurrogate(int var0) | 返回代碼點的高代理 |
static char | lowSurrogate(int var0) | 返回代碼點的低代理 |
3.4 因爲 surrogate 導致的統計個數
返回類型 | 方法名 | 簡述 | 補充 |
---|---|---|---|
static int | charCount(int var0) | codePoint 對應的 char 的個數 | |
static int | codePointCount(CharSequence var0, int var1, int var2) | v1-v2 之間的 codePoint 的個數 | 不是 char 的個數 |
static int | codePointCount(char[] var0, int var1, int var2) | 同上 | |
static int | offsetByCodePoints(CharSequence var0, int var1, int var2) | 返回偏移指定個數的 codepoint 後的索引 | 由於 codepoint 可能對應 2 個 char,索引不能簡單的直加 |
static int | offsetByCodePoints(char[] var0, int var1, int var2, int var3, int var4) | 同上,加限制了 |
3.5 codepoint 代表的類型 General category
返回類型 | 方法名 | 簡述 | 補充 |
---|---|---|---|
static boolean | isLowerCase(int var0) | 小寫? | |
static boolean | isUpperCase(int var0) | 大寫? | |
static boolean | isTitleCase(int var0) | 首字母大寫? | |
static boolean | isDigit(int var0) | 數字? | |
static boolean | isDefined(int var0) | 被定義爲 Unicode 中的字符? | |
static boolean | isLetter(int var0) | 字母? | |
static boolean | isLetterOrDigit(int var0) | 字母或數字? | |
static boolean | isJavaLetter(char var0) | isJavaIdentifierStart(var0) | |
static boolean | isJavaLetterOrDigit(char var0) | isJavaIdentifierPart(var0) | |
static boolean | isAlphabetic(int var0) | 比 isLetter 大一些 | 確定指定的字符(Unicode代碼點)是否是字母表 |
static boolean | isIdeographic(int var0) | 是否是Unicode標準定義的CJKV(中文,日文,韓文和越南文)表意文字 | |
static boolean | isJavaIdentifierStart(int var0) | The “Java letters” include uppercase and lowercase ASCII Latin letters A-Z (\u0041- \u005a), and a-z (\u0061-\u007a), | and, for historical reasons, the ASCII underscore (_, or \u005f) and dollar sign ($, or \u0024). |
static boolean | isJavaIdentifierPart(int var0) | 比上面多了數字 | 參考 3.8 章節 |
static boolean | isUnicodeIdentifierStart(int var0) | 是否允許作爲 Unicode 標識符中的首字符? | isLetter || LETTER_NUMBER |
static boolean | isUnicodeIdentifierPart(int var0) | 是否允許作爲 Unicode 標識符中的首字符以外的字符? | 不懂 |
static boolean | isIdentifierIgnorable(int var0) | 是否是 Java 標識符或 Unicode 標識符中可忽略的一個字符? | 不懂 |
static boolean | isSpaceChar(int var0) | unicode 中的空白字符? | |
static boolean | isWhitespace(int var0) | Java 中的空白字符? | |
static boolean | isISOControl(int var0) | 是否是ISO控制字符 | |
static boolean | isMirrored(int var0) | 是否鏡像 |
3.6 雜
返回類型 | 方法名 | 返回類型 | 簡述 | 補充 |
---|---|---|---|---|
static String | String getName(int codePoint) | static String | 返回codepoint 所屬類型的名稱 | |
static int | getNumericValue(int codePoint) | static int | 返回指定的Unicode字符代表的羅馬數值 | 字符’\ u216C’(羅馬數字50)將返回一個int 值50 |
static int | digit(int codePoint, int radix) | static int | codePoint 對應 radix 進制 的數值 | 因爲 0-9 + a-z,總數是 36,所以 2<=radix<=35; digit(‘h’,20)==17 |
static int | char forDigit(int digit,int radix) | static int | digit 對應的進制的字符 | forDigit(17,20)==‘h’ |
static Character | valueOf(char c) | static Character | 返回包裝類型 | |
static char | reverseBytes(char ch) | static char | 返回通過反轉指定的 char值中的字節順序獲得的值 | |
static int | getType(int var0) | static int | 返回 codepoint 類型 | |
static byte | getDirectionality(int var0) | static byte | 給定字符的Unicode方向性屬性 |
3.7 toLowerCase / toUpperCase /toTitleCase
返回類型 | 方法名 | 簡述 |
---|---|---|
static int | toLowerCase(int codePoint) | 返回對應的小寫的 codepoint |
static int | toUpperCase(int codePoint) | 返回對應的大寫的 codepoint |
static int | toUpperCaseEx(int codePoint) | 如果錯誤,返回 ERROR 代碼 |
static char[] | toUpperCaseCharArray(int codePoint) | 返回 char[] 形式 |
static char | toTitleCase(int codePoint) | 不懂 |
參考
jdk 1.8_171