美文网首页
Java源码浅析,Character(1)

Java源码浅析,Character(1)

作者: Tomy_Jx_Li | 来源:发表于2018-10-27 00:10 被阅读62次

    源码分析,基本上都加载注解上了,如有谬误,请指正,谢谢。
    Character由于比较长,只能分多篇了

    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> {
    /**
         * 常量,最小基数,主要用于数字转字符串,字符串转数字
         */
        public static final int MIN_RADIX = 2;
    
        /**
         * 常量,最小基数,主要用于数字转字符串,字符串转数字
         */
        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对象
         */
        @SuppressWarnings("unchecked")
        public static final Class<Character> TYPE = (Class<Character>) Class.getPrimitiveClass("char");
    
        /**
         * Unicode规范中的常规类别“Cn”,
         * 指示字符未被分配给任何 Unicode 类别
         *
         * @since 1.1
         */
        public static final byte UNASSIGNED = 0;
    
        /**
         * Unicode规范中的常规类别“Lu”,
         * 指示字符是大写字母
         *
         * @since 1.1
         */
        public static final byte UPPERCASE_LETTER = 1;
    
        /**
         * Unicode规范中的常规类别“Ll”,
         * 指示字符是小写字母
         *
         * @since 1.1
         */
        public static final byte LOWERCASE_LETTER = 2;
    
        /**
         * Unicode规范中的常规类别“Lt”,
         * 指示字符是词首字母大写字母
         *
         * @since 1.1
         */
        public static final byte TITLECASE_LETTER = 3;
    
        /**
         * Unicode规范中的常规类别"Lm",
         * 指示字符是修饰符字母,它是独立式的间距字符,指示前面字母的修改
         *
         * @since 1.1
         */
        public static final byte MODIFIER_LETTER = 4;
    
        /**
         * Unicode规范中的常规类别"Lo",
         * 指示字符是字母,但它不是大写字母、小写字母、词首字母大写或修饰符字母
         *
         * @since 1.1
         */
        public static final byte OTHER_LETTER = 5;
    
        /**
         * Unicode规范中的常规类别"Mn",
         * 指示字符是非间距字符,这指示基字符的修改
         *
         * @since 1.1
         */
        public static final byte NON_SPACING_MARK = 6;
    
        /**
         * Unicode规范中的常规类别"Me",
         * 指示字符是封闭符号,封闭符号是非间距组合字符,它环绕直到基字符(并包括基字符)的所有前面的字符
         *
         * @since 1.1
         */
        public static final byte ENCLOSING_MARK = 7;
    
        /**
         * Unicode规范中的常规类别"Mc",
         * 指示字符是间距字符,这指示基字符的修改并影响该基字符的标志符号的宽度
         *
         * @since 1.1
         */
        public static final byte COMBINING_SPACING_MARK = 8;
    
        /**
         * Unicode规范中的常规类别"Nd",
         * 指示字符是十进制数字,即在范围 0 到 9 内
         *
         * @since 1.1
         */
        public static final byte DECIMAL_DIGIT_NUMBER = 9;
    
        /**
         * Unicode规范中的常规类别"Nl",
         * 指示字符是由字母表示的数字,而不是十进制数字,例如,罗马数字 5 由字母“V”表示。
         *
         * @since 1.1
         */
        public static final byte LETTER_NUMBER = 10;
    
        /**
         * Unicode规范中的常规类别"No",
         * 指示字符是数字,但它既不是十进制数字也不是字母数字,例如分数 1/2
         *
         * @since 1.1
         */
        public static final byte OTHER_NUMBER = 11;
    
        /**
         * Unicode规范中的常规类别"Zs",
         * 指示字符是空白字符,它不具有标志符号,但不是控制或格式字符
         *
         * @since 1.1
         */
        public static final byte SPACE_SEPARATOR = 12;
    
        /**
         * Unicode规范中的常规类别"Zl",
         * 指示字符用于分隔文本各行
         *
         * @since 1.1
         */
        public static final byte LINE_SEPARATOR = 13;
    
        /**
         * Unicode规范中的常规类别"Zp",
         * 指示字符用于分隔段落
         *
         * @since 1.1
         */
        public static final byte PARAGRAPH_SEPARATOR = 14;
    
        /**
         * Unicode规范中的常规类别"Cc",
         * 指示字符是控制代码,其 Unicode 值是 U+007F,或者位于 U+0000 到 U+001F 或 U+0080 到 U+009F 范围内
         *
         * @since 1.1
         */
        public static final byte CONTROL = 15;
    
        /**
         * Unicode规范中的常规类别"Cf",
         * 指示字符是格式字符,格式字符是通常不呈现的字符,但它影响文本布局或文本处理操作
         *
         * @since 1.1
         */
        public static final byte FORMAT = 16;
    
        /**
         * Unicode规范中的常规类别"Co",
         * 指示字符是专用字符,其 Unicode 值在范围 U+E000 到 U+F8FF 内
         *
         * @since 1.1
         */
        public static final byte PRIVATE_USE = 18;
    
        /**
         * Unicode规范中的常规类别"Cs",
         * 这个主要用于增补码的。
         * 指示字符是高代理项还是低代理项。代理项代码值在范围 U+D800 到 U+DFFF 内
         *
         * @since 1.1
         */
        public static final byte SURROGATE = 19;
    
        /**
         * Unicode规范中的常规类别"Pd",
         * 指示字符是短划线或连字符
         *
         * @since 1.1
         */
        public static final byte DASH_PUNCTUATION = 20;
    
        /**
         * Unicode规范中的常规类别"Ps",
         * 指示字符是成对的标点符号(例如括号、方括号和大括号)之一的开始字符
         *
         * @since 1.1
         */
        public static final byte START_PUNCTUATION = 21;
    
        /**
         * Unicode规范中的常规类别"Pe",
         * 指示字符是成对的标点符号(例如括号、方括号和大括号)之一的封闭字符
         *
         * @since 1.1
         */
        public static final byte END_PUNCTUATION = 22;
    
        /**
         * Unicode规范中的常规类别"Pc",
         * 指示字符是连接两个字符的连接符标点
         *
         * @since 1.1
         */
        public static final byte CONNECTOR_PUNCTUATION = 23;
    
        /**
         * Unicode规范中的常规类别"Po",
         * 指示字符是标点,但它不是连接符标点、短划线标点、开始标点、结束标点、前引号标点或后引号标点
         *
         * @since 1.1
         */
        public static final byte OTHER_PUNCTUATION = 24;
    
        /**
         * Unicode规范中的常规类别"Sm",
         * 指示字符是数学符号,例如“+”或“=”
         *
         * @since 1.1
         */
        public static final byte MATH_SYMBOL = 25;
    
        /**
         * Unicode规范中的常规类别"Sc",
         * 指示字符是货币符号,例如“$”
         *
         * @since 1.1
         */
        public static final byte CURRENCY_SYMBOL = 26;
    
        /**
         * Unicode规范中的常规类别"Sk",
         * 指示字符是修饰符符号,这指示环绕字符的修改。例如,分数斜线号指示其左侧的数字为分子,右侧的数字为分母
         *
         * @since 1.1
         */
        public static final byte MODIFIER_SYMBOL = 27;
    
        /**
         * Unicode规范中的常规类别"So",
         * 指示字符是符号,但它不是数学符号、货币符号或修饰符符号
         *
         * @since 1.1
         */
        public static final byte OTHER_SYMBOL = 28;
    
        /**
         * Unicode规范中的常规类别"Pi",
         * 指示字符是开始或前引号
         *
         * @since 1.4
         */
        public static final byte INITIAL_QUOTE_PUNCTUATION = 29;
    
        /**
         * Unicode规范中的常规类别"Pf",
         * 指示字符是封闭或后引号
         *
         * @since 1.4
         */
        public static final byte FINAL_QUOTE_PUNCTUATION = 30;
    
        /**
         * 错误标志,使用int(代码点)以避免与U + FFFF混淆。
         * 任何文字在Unicode中都对应一个值, 这个值称为代码点,代码点的值通常写成 U+ABCD 的格式
         * 具体的内容可以查看:http://ping235.blog.163.com/blog/static/44476138201042711333577/
         */
        static final int ERROR = 0xFFFFFFFF;
    
    
        /**
         * 未定义的双向字符类型. 未定义的char值在Unicode规范中具有未定义的方向性
         *
         * @since 1.4
         */
        public static final byte DIRECTIONALITY_UNDEFINED = -1;
    
        /**
         * Unicode规范中的强双向字符类型"L",
         * LRM,大多数字母,音节,汉字表意文字,非欧洲或非阿拉伯数字,......
         *
         * @since 1.4
         */
        public static final byte DIRECTIONALITY_LEFT_TO_RIGHT = 0;
    
        /**
         * Unicode规范中的强双向字符类型"R"
         * RLM,希伯来语字母和相关的标点符号
         *
         * @since 1.4
         */
        public static final byte DIRECTIONALITY_RIGHT_TO_LEFT = 1;
    
        /**
         * Unicode规范中的强双向字符类型"AL"
         * ALM,阿拉伯语,Thaana和叙利亚语字母表,大多数特定于这些脚本的标点符号,......
         *
         * @since 1.4
         */
        public static final byte DIRECTIONALITY_RIGHT_TO_LEFT_ARABIC = 2;
    
        /**
         * Unicode规范中的弱双向字符类型"EN"
         * 欧洲数字,东部阿拉伯语 - 印度数字,......
         *
         * @since 1.4
         */
        public static final byte DIRECTIONALITY_EUROPEAN_NUMBER = 3;
    
        /**
         * Unicode规范中的弱双向字符类型"ES"
         * 加号,减号
         *
         * @since 1.4
         */
        public static final byte DIRECTIONALITY_EUROPEAN_NUMBER_SEPARATOR = 4;
    
        /**
         * Unicode规范中的弱双向字符类型"ET"
         * DEGREE SIGN,货币符号,......
         *
         * @since 1.4
         */
        public static final byte DIRECTIONALITY_EUROPEAN_NUMBER_TERMINATOR = 5;
    
        /**
         * Unicode规范中的弱双向字符类型"AN"
         * 阿拉伯语 - 印度数字,阿拉伯小数和千位分隔符,......
         *
         * @since 1.4
         */
        public static final byte DIRECTIONALITY_ARABIC_NUMBER = 6;
    
        /**
         * Unicode规范中的弱双向字符类型"CS"
         * 冒号, 段落, FULL STOP, NO-BREAK SPACE, ...
         *
         * @since 1.4
         */
        public static final byte DIRECTIONALITY_COMMON_NUMBER_SEPARATOR = 7;
    
        /**
         * Unicode规范中的弱双向字符类型"NSM"
         * 具有General_Category值的字符:Mn(Nonspacing_Mark)和Me(Enclosing_Mark)
         *
         * @since 1.4
         */
        public static final byte DIRECTIONALITY_NONSPACING_MARK = 8;
    
        /**
         * Unicode规范中的弱双向字符类型"BN"
         * 默认的可忽略,非字符和控制字符,除了明确给出其他类型的字符。
         *
         * @since 1.4
         */
        public static final byte DIRECTIONALITY_BOUNDARY_NEUTRAL = 9;
    
        /**
         * Unicode规范中的中性双向字符类型"B"
         * PARAGRAPH SEPARATOR,适当的换行符函数,更高级别的协议段落确定
         *
         * @since 1.4
         */
        public static final byte DIRECTIONALITY_PARAGRAPH_SEPARATOR = 10;
    
        /**
         * Unicode规范中的中性双向字符类型"S"
         * Tab,制表符
         *
         * @since 1.4
         */
        public static final byte DIRECTIONALITY_SEGMENT_SEPARATOR = 11;
    
        /**
         * Unicode规范中的中性双向字符类型"WS"
         * 空格,FIGURE SPACE,行分隔符,FORM FEED,通用标点空格,......
         *
         * @since 1.4
         */
        public static final byte DIRECTIONALITY_WHITESPACE = 12;
    
        /**
         * Unicode规范中的中性双向字符类型"ON"
         * 所有其他字符,包括OBJECT REPLACEMENT CHARACTER
         *
         * @since 1.4
         */
        public static final byte DIRECTIONALITY_OTHER_NEUTRALS = 13;
    
        /**
         * Unicode规范中的强双向字符类型"LRE"
         * 将文本视为从左到右嵌入
         *
         * @since 1.4
         */
        public static final byte DIRECTIONALITY_LEFT_TO_RIGHT_EMBEDDING = 14;
    
        /**
         * Unicode规范中的强双向字符类型"LRO"
         * 强制将后续字符视为强大的从左到右字符
         */
        public static final byte DIRECTIONALITY_LEFT_TO_RIGHT_OVERRIDE = 15;
    
        /**
         * Unicode规范中的强双向字符类型"RLE"
         * 将文本视为从右到左嵌入
         */
        public static final byte DIRECTIONALITY_RIGHT_TO_LEFT_EMBEDDING = 16;
    
        /**
         * Unicode规范中的强双向字符类型"RLO"
         * 强制将后续字符视为强大的从右到左的字符
         */
        public static final byte DIRECTIONALITY_RIGHT_TO_LEFT_OVERRIDE = 17;
    
        /**
         * Unicode规范中的弱双向字符类型"PDF"
         * 结束最后一个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编码增补码表示法的最小char(其实就是把地位和高位算法取最小)
         *
         * @since 1.5
         */
        public static final char MIN_SURROGATE = MIN_HIGH_SURROGATE;
    
        /**
         * UTF-16编码增补码表示法的最大char(其实就是把地位和高位算法取最大)
         *
         * @since 1.5
         */
        public static final char MAX_SURROGATE = MAX_LOW_SURROGATE;
    
        /**
         * 最小的增补代码点
         * Unicode最初设计是作为一种固定宽度的16位字符编码。
         * 在Java编程语言中,基本数据类型char初衷是通过提供一种简单的、能够包含任何字符的数据类型来充分利用这种设计的优点。
         * 不过,现在看来,16位编码的所有65 536个字符并不能完全表示全世界所有正在使用或曾经使用的字符。
         * 于是,Unicode标准已扩展到包含多达1 112 064个字符。那些超出原来的16位限制的字符被称作增补字符。
         * 具体查看:https://www.cnblogs.com/vinozly/p/5155304.html
         *
         * @since 1.5
         */
        public static final int MIN_SUPPLEMENTARY_CODE_POINT = 0x010000;
    
        /**
         * 最小代码点
         *
         * @since 1.5
         */
        public static final int MIN_CODE_POINT = 0x000000;
    
        /**
         * 最大代码点
         *
         * @since 1.5
         */
        public static final int MAX_CODE_POINT = 0X10FFFF;
    
    
        /**
         * 此类的实例表示Unicode字符集的特定子集
         * Character类中定义的唯一子集族是UnicodeBlock。Java API的其他部分可以为其自身目的定义其他子集
         *
         * @since 1.2
         */
        public static class Subset {
    
            private String name;
    
            /**
             * 创建实例
             */
            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;
            }
        }
    }
    

    相关文章

      网友评论

          本文标题:Java源码浅析,Character(1)

          本文链接:https://www.haomeiwen.com/subject/kgjrtqtx.html