Java 基礎類型 —— Character

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

官方 API

基礎數據類型之Character

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章