源碼分析,基本上都加載注解上了,如有謬誤,請(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;
}
}
}