Java源碼淺析,Character(1)

源碼分析,基本上都加載注解上了,如有謬誤,請(qǐng)指正,謝謝。
Character由于比較長(zhǎng),只能分多篇了

package com.jiyx.test.java.lang;

import java.io.Serializable;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;

/**
 * auther: jiyx
 * date: 2018/9/13.
 */
public class Character implements Serializable, Comparable<Character> {
/**
     * 常量,最小基數(shù),主要用于數(shù)字轉(zhuǎn)字符串,字符串轉(zhuǎn)數(shù)字
     */
    public static final int MIN_RADIX = 2;

    /**
     * 常量,最小基數(shù),主要用于數(shù)字轉(zhuǎn)字符串,字符串轉(zhuǎn)數(shù)字
     */
    public static final int MAX_RADIX = 36;

    /**
     * char所能代表的最小值
     */
    public static final char MIN_VALUE = '\u0000';

    /**
     * char能代表的最大值
     */
    public static final char MAX_VALUE = '\uFFFF';

    /**
     * Char的class對(duì)象
     */
    @SuppressWarnings("unchecked")
    public static final Class<Character> TYPE = (Class<Character>) Class.getPrimitiveClass("char");

    /**
     * Unicode規(guī)范中的常規(guī)類(lèi)別“Cn”,
     * 指示字符未被分配給任何 Unicode 類(lèi)別
     *
     * @since 1.1
     */
    public static final byte UNASSIGNED = 0;

    /**
     * Unicode規(guī)范中的常規(guī)類(lèi)別“Lu”,
     * 指示字符是大寫(xiě)字母
     *
     * @since 1.1
     */
    public static final byte UPPERCASE_LETTER = 1;

    /**
     * Unicode規(guī)范中的常規(guī)類(lèi)別“Ll”,
     * 指示字符是小寫(xiě)字母
     *
     * @since 1.1
     */
    public static final byte LOWERCASE_LETTER = 2;

    /**
     * Unicode規(guī)范中的常規(guī)類(lèi)別“Lt”,
     * 指示字符是詞首字母大寫(xiě)字母
     *
     * @since 1.1
     */
    public static final byte TITLECASE_LETTER = 3;

    /**
     * Unicode規(guī)范中的常規(guī)類(lèi)別"Lm",
     * 指示字符是修飾符字母,它是獨(dú)立式的間距字符,指示前面字母的修改
     *
     * @since 1.1
     */
    public static final byte MODIFIER_LETTER = 4;

    /**
     * Unicode規(guī)范中的常規(guī)類(lèi)別"Lo",
     * 指示字符是字母,但它不是大寫(xiě)字母、小寫(xiě)字母、詞首字母大寫(xiě)或修飾符字母
     *
     * @since 1.1
     */
    public static final byte OTHER_LETTER = 5;

    /**
     * Unicode規(guī)范中的常規(guī)類(lèi)別"Mn",
     * 指示字符是非間距字符,這指示基字符的修改
     *
     * @since 1.1
     */
    public static final byte NON_SPACING_MARK = 6;

    /**
     * Unicode規(guī)范中的常規(guī)類(lèi)別"Me",
     * 指示字符是封閉符號(hào),封閉符號(hào)是非間距組合字符,它環(huán)繞直到基字符(并包括基字符)的所有前面的字符
     *
     * @since 1.1
     */
    public static final byte ENCLOSING_MARK = 7;

    /**
     * Unicode規(guī)范中的常規(guī)類(lèi)別"Mc",
     * 指示字符是間距字符,這指示基字符的修改并影響該基字符的標(biāo)志符號(hào)的寬度
     *
     * @since 1.1
     */
    public static final byte COMBINING_SPACING_MARK = 8;

    /**
     * Unicode規(guī)范中的常規(guī)類(lèi)別"Nd",
     * 指示字符是十進(jìn)制數(shù)字,即在范圍 0 到 9 內(nèi)
     *
     * @since 1.1
     */
    public static final byte DECIMAL_DIGIT_NUMBER = 9;

    /**
     * Unicode規(guī)范中的常規(guī)類(lèi)別"Nl",
     * 指示字符是由字母表示的數(shù)字,而不是十進(jìn)制數(shù)字,例如,羅馬數(shù)字 5 由字母“V”表示。
     *
     * @since 1.1
     */
    public static final byte LETTER_NUMBER = 10;

    /**
     * Unicode規(guī)范中的常規(guī)類(lèi)別"No",
     * 指示字符是數(shù)字,但它既不是十進(jìn)制數(shù)字也不是字母數(shù)字,例如分?jǐn)?shù) 1/2
     *
     * @since 1.1
     */
    public static final byte OTHER_NUMBER = 11;

    /**
     * Unicode規(guī)范中的常規(guī)類(lèi)別"Zs",
     * 指示字符是空白字符,它不具有標(biāo)志符號(hào),但不是控制或格式字符
     *
     * @since 1.1
     */
    public static final byte SPACE_SEPARATOR = 12;

    /**
     * Unicode規(guī)范中的常規(guī)類(lèi)別"Zl",
     * 指示字符用于分隔文本各行
     *
     * @since 1.1
     */
    public static final byte LINE_SEPARATOR = 13;

    /**
     * Unicode規(guī)范中的常規(guī)類(lèi)別"Zp",
     * 指示字符用于分隔段落
     *
     * @since 1.1
     */
    public static final byte PARAGRAPH_SEPARATOR = 14;

    /**
     * Unicode規(guī)范中的常規(guī)類(lèi)別"Cc",
     * 指示字符是控制代碼,其 Unicode 值是 U+007F,或者位于 U+0000 到 U+001F 或 U+0080 到 U+009F 范圍內(nèi)
     *
     * @since 1.1
     */
    public static final byte CONTROL = 15;

    /**
     * Unicode規(guī)范中的常規(guī)類(lèi)別"Cf",
     * 指示字符是格式字符,格式字符是通常不呈現(xiàn)的字符,但它影響文本布局或文本處理操作
     *
     * @since 1.1
     */
    public static final byte FORMAT = 16;

    /**
     * Unicode規(guī)范中的常規(guī)類(lèi)別"Co",
     * 指示字符是專(zhuān)用字符,其 Unicode 值在范圍 U+E000 到 U+F8FF 內(nèi)
     *
     * @since 1.1
     */
    public static final byte PRIVATE_USE = 18;

    /**
     * Unicode規(guī)范中的常規(guī)類(lèi)別"Cs",
     * 這個(gè)主要用于增補(bǔ)碼的。
     * 指示字符是高代理項(xiàng)還是低代理項(xiàng)。代理項(xiàng)代碼值在范圍 U+D800 到 U+DFFF 內(nèi)
     *
     * @since 1.1
     */
    public static final byte SURROGATE = 19;

    /**
     * Unicode規(guī)范中的常規(guī)類(lèi)別"Pd",
     * 指示字符是短劃線(xiàn)或連字符
     *
     * @since 1.1
     */
    public static final byte DASH_PUNCTUATION = 20;

    /**
     * Unicode規(guī)范中的常規(guī)類(lèi)別"Ps",
     * 指示字符是成對(duì)的標(biāo)點(diǎn)符號(hào)(例如括號(hào)、方括號(hào)和大括號(hào))之一的開(kāi)始字符
     *
     * @since 1.1
     */
    public static final byte START_PUNCTUATION = 21;

    /**
     * Unicode規(guī)范中的常規(guī)類(lèi)別"Pe",
     * 指示字符是成對(duì)的標(biāo)點(diǎn)符號(hào)(例如括號(hào)、方括號(hào)和大括號(hào))之一的封閉字符
     *
     * @since 1.1
     */
    public static final byte END_PUNCTUATION = 22;

    /**
     * Unicode規(guī)范中的常規(guī)類(lèi)別"Pc",
     * 指示字符是連接兩個(gè)字符的連接符標(biāo)點(diǎn)
     *
     * @since 1.1
     */
    public static final byte CONNECTOR_PUNCTUATION = 23;

    /**
     * Unicode規(guī)范中的常規(guī)類(lèi)別"Po",
     * 指示字符是標(biāo)點(diǎn),但它不是連接符標(biāo)點(diǎn)、短劃線(xiàn)標(biāo)點(diǎn)、開(kāi)始標(biāo)點(diǎn)、結(jié)束標(biāo)點(diǎn)、前引號(hào)標(biāo)點(diǎn)或后引號(hào)標(biāo)點(diǎn)
     *
     * @since 1.1
     */
    public static final byte OTHER_PUNCTUATION = 24;

    /**
     * Unicode規(guī)范中的常規(guī)類(lèi)別"Sm",
     * 指示字符是數(shù)學(xué)符號(hào),例如“+”或“=”
     *
     * @since 1.1
     */
    public static final byte MATH_SYMBOL = 25;

    /**
     * Unicode規(guī)范中的常規(guī)類(lèi)別"Sc",
     * 指示字符是貨幣符號(hào),例如“$”
     *
     * @since 1.1
     */
    public static final byte CURRENCY_SYMBOL = 26;

    /**
     * Unicode規(guī)范中的常規(guī)類(lèi)別"Sk",
     * 指示字符是修飾符符號(hào),這指示環(huán)繞字符的修改。例如,分?jǐn)?shù)斜線(xiàn)號(hào)指示其左側(cè)的數(shù)字為分子,右側(cè)的數(shù)字為分母
     *
     * @since 1.1
     */
    public static final byte MODIFIER_SYMBOL = 27;

    /**
     * Unicode規(guī)范中的常規(guī)類(lèi)別"So",
     * 指示字符是符號(hào),但它不是數(shù)學(xué)符號(hào)、貨幣符號(hào)或修飾符符號(hào)
     *
     * @since 1.1
     */
    public static final byte OTHER_SYMBOL = 28;

    /**
     * Unicode規(guī)范中的常規(guī)類(lèi)別"Pi",
     * 指示字符是開(kāi)始或前引號(hào)
     *
     * @since 1.4
     */
    public static final byte INITIAL_QUOTE_PUNCTUATION = 29;

    /**
     * Unicode規(guī)范中的常規(guī)類(lèi)別"Pf",
     * 指示字符是封閉或后引號(hào)
     *
     * @since 1.4
     */
    public static final byte FINAL_QUOTE_PUNCTUATION = 30;

    /**
     * 錯(cuò)誤標(biāo)志,使用int(代碼點(diǎn))以避免與U + FFFF混淆。
     * 任何文字在Unicode中都對(duì)應(yīng)一個(gè)值, 這個(gè)值稱(chēng)為代碼點(diǎn),代碼點(diǎn)的值通常寫(xiě)成 U+ABCD 的格式
     * 具體的內(nèi)容可以查看:http://ping235.blog.163.com/blog/static/44476138201042711333577/
     */
    static final int ERROR = 0xFFFFFFFF;


    /**
     * 未定義的雙向字符類(lèi)型. 未定義的char值在Unicode規(guī)范中具有未定義的方向性
     *
     * @since 1.4
     */
    public static final byte DIRECTIONALITY_UNDEFINED = -1;

    /**
     * Unicode規(guī)范中的強(qiáng)雙向字符類(lèi)型"L",
     * LRM,大多數(shù)字母,音節(jié),漢字表意文字,非歐洲或非阿拉伯?dāng)?shù)字,......
     *
     * @since 1.4
     */
    public static final byte DIRECTIONALITY_LEFT_TO_RIGHT = 0;

    /**
     * Unicode規(guī)范中的強(qiáng)雙向字符類(lèi)型"R"
     * RLM,希伯來(lái)語(yǔ)字母和相關(guān)的標(biāo)點(diǎn)符號(hào)
     *
     * @since 1.4
     */
    public static final byte DIRECTIONALITY_RIGHT_TO_LEFT = 1;

    /**
     * Unicode規(guī)范中的強(qiáng)雙向字符類(lèi)型"AL"
     * ALM,阿拉伯語(yǔ),Thaana和敘利亞語(yǔ)字母表,大多數(shù)特定于這些腳本的標(biāo)點(diǎn)符號(hào),......
     *
     * @since 1.4
     */
    public static final byte DIRECTIONALITY_RIGHT_TO_LEFT_ARABIC = 2;

    /**
     * Unicode規(guī)范中的弱雙向字符類(lèi)型"EN"
     * 歐洲數(shù)字,東部阿拉伯語(yǔ) - 印度數(shù)字,......
     *
     * @since 1.4
     */
    public static final byte DIRECTIONALITY_EUROPEAN_NUMBER = 3;

    /**
     * Unicode規(guī)范中的弱雙向字符類(lèi)型"ES"
     * 加號(hào),減號(hào)
     *
     * @since 1.4
     */
    public static final byte DIRECTIONALITY_EUROPEAN_NUMBER_SEPARATOR = 4;

    /**
     * Unicode規(guī)范中的弱雙向字符類(lèi)型"ET"
     * DEGREE SIGN,貨幣符號(hào),......
     *
     * @since 1.4
     */
    public static final byte DIRECTIONALITY_EUROPEAN_NUMBER_TERMINATOR = 5;

    /**
     * Unicode規(guī)范中的弱雙向字符類(lèi)型"AN"
     * 阿拉伯語(yǔ) - 印度數(shù)字,阿拉伯小數(shù)和千位分隔符,......
     *
     * @since 1.4
     */
    public static final byte DIRECTIONALITY_ARABIC_NUMBER = 6;

    /**
     * Unicode規(guī)范中的弱雙向字符類(lèi)型"CS"
     * 冒號(hào), 段落, FULL STOP, NO-BREAK SPACE, ...
     *
     * @since 1.4
     */
    public static final byte DIRECTIONALITY_COMMON_NUMBER_SEPARATOR = 7;

    /**
     * Unicode規(guī)范中的弱雙向字符類(lèi)型"NSM"
     * 具有General_Category值的字符:Mn(Nonspacing_Mark)和Me(Enclosing_Mark)
     *
     * @since 1.4
     */
    public static final byte DIRECTIONALITY_NONSPACING_MARK = 8;

    /**
     * Unicode規(guī)范中的弱雙向字符類(lèi)型"BN"
     * 默認(rèn)的可忽略,非字符和控制字符,除了明確給出其他類(lèi)型的字符。
     *
     * @since 1.4
     */
    public static final byte DIRECTIONALITY_BOUNDARY_NEUTRAL = 9;

    /**
     * Unicode規(guī)范中的中性雙向字符類(lèi)型"B"
     * PARAGRAPH SEPARATOR,適當(dāng)?shù)膿Q行符函數(shù),更高級(jí)別的協(xié)議段落確定
     *
     * @since 1.4
     */
    public static final byte DIRECTIONALITY_PARAGRAPH_SEPARATOR = 10;

    /**
     * Unicode規(guī)范中的中性雙向字符類(lèi)型"S"
     * Tab,制表符
     *
     * @since 1.4
     */
    public static final byte DIRECTIONALITY_SEGMENT_SEPARATOR = 11;

    /**
     * Unicode規(guī)范中的中性雙向字符類(lèi)型"WS"
     * 空格,F(xiàn)IGURE SPACE,行分隔符,F(xiàn)ORM FEED,通用標(biāo)點(diǎn)空格,......
     *
     * @since 1.4
     */
    public static final byte DIRECTIONALITY_WHITESPACE = 12;

    /**
     * Unicode規(guī)范中的中性雙向字符類(lèi)型"ON"
     * 所有其他字符,包括OBJECT REPLACEMENT CHARACTER
     *
     * @since 1.4
     */
    public static final byte DIRECTIONALITY_OTHER_NEUTRALS = 13;

    /**
     * Unicode規(guī)范中的強(qiáng)雙向字符類(lèi)型"LRE"
     * 將文本視為從左到右嵌入
     *
     * @since 1.4
     */
    public static final byte DIRECTIONALITY_LEFT_TO_RIGHT_EMBEDDING = 14;

    /**
     * Unicode規(guī)范中的強(qiáng)雙向字符類(lèi)型"LRO"
     * 強(qiáng)制將后續(xù)字符視為強(qiáng)大的從左到右字符
     */
    public static final byte DIRECTIONALITY_LEFT_TO_RIGHT_OVERRIDE = 15;

    /**
     * Unicode規(guī)范中的強(qiáng)雙向字符類(lèi)型"RLE"
     * 將文本視為從右到左嵌入
     */
    public static final byte DIRECTIONALITY_RIGHT_TO_LEFT_EMBEDDING = 16;

    /**
     * Unicode規(guī)范中的強(qiáng)雙向字符類(lèi)型"RLO"
     * 強(qiáng)制將后續(xù)字符視為強(qiáng)大的從右到左的字符
     */
    public static final byte DIRECTIONALITY_RIGHT_TO_LEFT_OVERRIDE = 17;

    /**
     * Unicode規(guī)范中的弱雙向字符類(lèi)型"PDF"
     * 結(jié)束最后一個(gè)LRE,RLE,RLO或LRO的范圍。
     */
    public static final byte DIRECTIONALITY_POP_DIRECTIONAL_FORMAT = 18;

    /**
     * UTF-16的高位表示法,代表的最小char
     */
    public static final char MIN_HIGH_SURROGATE = '\uD800';

    /**
     * UTF-16的高位表示法,代表的最大char
     */
    public static final char MAX_HIGH_SURROGATE = '\uDBFF';

    /**
     * UTF-16的低位表示法,代表的最小char
     *
     * @since 1.5
     */
    public static final char MIN_LOW_SURROGATE = '\uDC00';

    /**
     * UTF-16的低位表示法,代表的最大char
     *
     * @since 1.5
     */
    public static final char MAX_LOW_SURROGATE = '\uDFFF';

    /**
     * UTF-16編碼增補(bǔ)碼表示法的最小char(其實(shí)就是把地位和高位算法取最小)
     *
     * @since 1.5
     */
    public static final char MIN_SURROGATE = MIN_HIGH_SURROGATE;

    /**
     * UTF-16編碼增補(bǔ)碼表示法的最大char(其實(shí)就是把地位和高位算法取最大)
     *
     * @since 1.5
     */
    public static final char MAX_SURROGATE = MAX_LOW_SURROGATE;

    /**
     * 最小的增補(bǔ)代碼點(diǎn)
     * Unicode最初設(shè)計(jì)是作為一種固定寬度的16位字符編碼。
     * 在Java編程語(yǔ)言中,基本數(shù)據(jù)類(lèi)型char初衷是通過(guò)提供一種簡(jiǎn)單的、能夠包含任何字符的數(shù)據(jù)類(lèi)型來(lái)充分利用這種設(shè)計(jì)的優(yōu)點(diǎn)。
     * 不過(guò),現(xiàn)在看來(lái),16位編碼的所有65 536個(gè)字符并不能完全表示全世界所有正在使用或曾經(jīng)使用的字符。
     * 于是,Unicode標(biāo)準(zhǔn)已擴(kuò)展到包含多達(dá)1 112 064個(gè)字符。那些超出原來(lái)的16位限制的字符被稱(chēng)作增補(bǔ)字符。
     * 具體查看:https://www.cnblogs.com/vinozly/p/5155304.html
     *
     * @since 1.5
     */
    public static final int MIN_SUPPLEMENTARY_CODE_POINT = 0x010000;

    /**
     * 最小代碼點(diǎn)
     *
     * @since 1.5
     */
    public static final int MIN_CODE_POINT = 0x000000;

    /**
     * 最大代碼點(diǎn)
     *
     * @since 1.5
     */
    public static final int MAX_CODE_POINT = 0X10FFFF;


    /**
     * 此類(lèi)的實(shí)例表示Unicode字符集的特定子集
     * Character類(lèi)中定義的唯一子集族是UnicodeBlock。Java API的其他部分可以為其自身目的定義其他子集
     *
     * @since 1.2
     */
    public static class Subset {

        private String name;

        /**
         * 創(chuàng)建實(shí)例
         */
        protected Subset(String name) {
            if (name == null) {
                throw new NullPointerException("name");
            }
            this.name = name;
        }

        /**
         * equals
         */
        public final boolean equals(Object obj) {
            return (this == obj);
        }

        /**
         * hashCode
         */
        public final int hashCode() {
            return super.hashCode();
        }

        /**
         * 返回name
         */
        public final String toString() {
            return name;
        }
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,366評(píng)論 25 708
  • 用兩張圖告訴你,為什么你的 App 會(huì)卡頓? - Android - 掘金 Cover 有什么料? 從這篇文章中你...
    hw1212閱讀 14,142評(píng)論 2 59
  • 今天沒(méi)有讀課外書(shū)。 今天聽(tīng)了《愛(ài)了很久的朋友》。 今天充實(shí)程度8顆星。 明天又是新的一天。
    答案之書(shū)閱讀 172評(píng)論 0 0
  • 你忙,我可以理解,你和別人聊天,我也理解,你聊完了刪除所有信息,我依然可以理解,可是,萬(wàn)一有一天,我在你的世界消失...
    另眼看空城閱讀 1,145評(píng)論 0 4
  • 很累的一天,從早學(xué)到晚,兩百個(gè)單詞,四本書(shū)!堅(jiān)持吧

友情鏈接更多精彩內(nèi)容