本文基于JDK1.8学习与分析Character源码。

public final class Character implements java.io.Serializable, Comparable<Character>

Character类包装一个对象中的基本类型char的值。 类型为Character的对象包含一个单一字段,其类型为char 。此外,该类还提供了几种方法来确定字符的类别(小写字母,数字等),并将字符从大写转换为小写,反之亦然。

package java.lang;import java.util.Arrays;
import java.util.Map;
import java.util.HashMap;
import java.util.Locale;/*** @author  Lee Boynton* @author  Guy Steele* @author  Akira Tanaka* @author  Martin Buchholz* @author  Ulf Zibis* @since   1.0*/
public final class Character implements java.io.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';public static final char MAX_VALUE = '\uFFFF';/*** 获取包装类对应的Class对象*/@SuppressWarnings("unchecked")public static final Class<Character> TYPE = (Class<Character>) Class.getPrimitiveClass("char");/*** byte常量*/public static final byte UNASSIGNED = 0;public static final byte UPPERCASE_LETTER = 1;public static final byte LOWERCASE_LETTER = 2;public static final byte TITLECASE_LETTER = 3;public static final byte MODIFIER_LETTER = 4;public static final byte OTHER_LETTER = 5;public static final byte NON_SPACING_MARK = 6;public static final byte ENCLOSING_MARK = 7;public static final byte COMBINING_SPACING_MARK = 8;public static final byte DECIMAL_DIGIT_NUMBER  = 9;public static final byte LETTER_NUMBER = 10;public static final byte OTHER_NUMBER = 11;public static final byte SPACE_SEPARATOR = 12;public static final byte LINE_SEPARATOR = 13;public static final byte PARAGRAPH_SEPARATOR = 14;public static final byte CONTROL = 15;public static final byte FORMAT = 16;public static final byte PRIVATE_USE = 18;public static final byte SURROGATE = 19;public static final byte DASH_PUNCTUATION = 20;public static final byte START_PUNCTUATION = 21;public static final byte END_PUNCTUATION = 22;public static final byte CONNECTOR_PUNCTUATION = 23;public static final byte OTHER_PUNCTUATION = 24;public static final byte MATH_SYMBOL = 25;public static final byte CURRENCY_SYMBOL = 26;public static final byte MODIFIER_SYMBOL = 27;public static final byte OTHER_SYMBOL = 28;public static final byte INITIAL_QUOTE_PUNCTUATION = 29;public static final byte FINAL_QUOTE_PUNCTUATION = 30;/*** 定义一个int类型的错误标记*/static final int ERROR = 0xFFFFFFFF;/*** byte常量*/public static final byte DIRECTIONALITY_UNDEFINED = -1;public static final byte DIRECTIONALITY_LEFT_TO_RIGHT = 0;public static final byte DIRECTIONALITY_RIGHT_TO_LEFT = 1;public static final byte DIRECTIONALITY_RIGHT_TO_LEFT_ARABIC = 2;public static final byte DIRECTIONALITY_EUROPEAN_NUMBER = 3;public static final byte DIRECTIONALITY_EUROPEAN_NUMBER_SEPARATOR = 4;public static final byte DIRECTIONALITY_EUROPEAN_NUMBER_TERMINATOR = 5;public static final byte DIRECTIONALITY_ARABIC_NUMBER = 6;public static final byte DIRECTIONALITY_COMMON_NUMBER_SEPARATOR = 7;public static final byte DIRECTIONALITY_NONSPACING_MARK = 8;public static final byte DIRECTIONALITY_BOUNDARY_NEUTRAL = 9;public static final byte DIRECTIONALITY_PARAGRAPH_SEPARATOR = 10;public static final byte DIRECTIONALITY_SEGMENT_SEPARATOR = 11;public static final byte DIRECTIONALITY_WHITESPACE = 12;public static final byte DIRECTIONALITY_OTHER_NEUTRALS = 13;public static final byte DIRECTIONALITY_LEFT_TO_RIGHT_EMBEDDING = 14;public static final byte DIRECTIONALITY_LEFT_TO_RIGHT_OVERRIDE = 15;public static final byte DIRECTIONALITY_RIGHT_TO_LEFT_EMBEDDING = 16;public static final byte DIRECTIONALITY_RIGHT_TO_LEFT_OVERRIDE = 17;public static final byte DIRECTIONALITY_POP_DIRECTIONAL_FORMAT = 18;/*** char常量*/public static final char MIN_HIGH_SURROGATE = '\uD800';public static final char MAX_HIGH_SURROGATE = '\uDBFF';public static final char MIN_LOW_SURROGATE  = '\uDC00';public static final char MAX_LOW_SURROGATE  = '\uDFFF';public static final char MIN_SURROGATE = MIN_HIGH_SURROGATE;public static final char MAX_SURROGATE = MAX_LOW_SURROGATE;/*** int常量*/public static final int MIN_SUPPLEMENTARY_CODE_POINT = 0x010000;public static final int MIN_CODE_POINT = 0x000000;public static final int MAX_CODE_POINT = 0X10FFFF;/*** Unicode字符集的特定子集*/public static class Subset  {private String name;protected Subset(String name) {if (name == null) {throw new NullPointerException("name");}this.name = name;}/*** 比较两个 Subset对象的相等性*/public final boolean equals(Object obj) {return (this == obj);}/*** 返回由 Object.hashCode()方法定义的标准哈希码*/public final int hashCode() {return super.hashCode();}/*** 返回此子集的名称*/public final String toString() {return name;}}/*** 静态内部类UnicodeBlock*/public static final class UnicodeBlock extends Subset {private static Map<String, UnicodeBlock> map = new HashMap<>(256);/*** 私有构造方法*/private UnicodeBlock(String idName) {super(idName);map.put(idName, this);}private UnicodeBlock(String idName, String alias) {this(idName);map.put(alias, this);}private UnicodeBlock(String idName, String... aliases) {this(idName);for (String alias : aliases)map.put(alias, this);}/*** 静态常量类UnicodeBlock*/public static final UnicodeBlock  BASIC_LATIN =new UnicodeBlock("BASIC_LATIN","BASIC LATIN","BASICLATIN");public static final UnicodeBlock LATIN_1_SUPPLEMENT =new UnicodeBlock("LATIN_1_SUPPLEMENT","LATIN-1 SUPPLEMENT","LATIN-1SUPPLEMENT");public static final UnicodeBlock LATIN_EXTENDED_A =new UnicodeBlock("LATIN_EXTENDED_A","LATIN EXTENDED-A","LATINEXTENDED-A");public static final UnicodeBlock LATIN_EXTENDED_B =new UnicodeBlock("LATIN_EXTENDED_B","LATIN EXTENDED-B","LATINEXTENDED-B");public static final UnicodeBlock IPA_EXTENSIONS =new UnicodeBlock("IPA_EXTENSIONS","IPA EXTENSIONS","IPAEXTENSIONS");public static final UnicodeBlock SPACING_MODIFIER_LETTERS =new UnicodeBlock("SPACING_MODIFIER_LETTERS","SPACING MODIFIER LETTERS","SPACINGMODIFIERLETTERS");public static final UnicodeBlock COMBINING_DIACRITICAL_MARKS =new UnicodeBlock("COMBINING_DIACRITICAL_MARKS","COMBINING DIACRITICAL MARKS","COMBININGDIACRITICALMARKS");public static final UnicodeBlock GREEK =new UnicodeBlock("GREEK","GREEK AND COPTIC","GREEKANDCOPTIC");public static final UnicodeBlock CYRILLIC =new UnicodeBlock("CYRILLIC");public static final UnicodeBlock ARMENIAN =new UnicodeBlock("ARMENIAN");public static final UnicodeBlock HEBREW =new UnicodeBlock("HEBREW");public static final UnicodeBlock ARABIC =new UnicodeBlock("ARABIC");public static final UnicodeBlock DEVANAGARI =new UnicodeBlock("DEVANAGARI");public static final UnicodeBlock BENGALI =new UnicodeBlock("BENGALI");public static final UnicodeBlock GURMUKHI =new UnicodeBlock("GURMUKHI");public static final UnicodeBlock GUJARATI =new UnicodeBlock("GUJARATI");public static final UnicodeBlock ORIYA =new UnicodeBlock("ORIYA");public static final UnicodeBlock TAMIL =new UnicodeBlock("TAMIL");public static final UnicodeBlock TELUGU =new UnicodeBlock("TELUGU");public static final UnicodeBlock KANNADA =new UnicodeBlock("KANNADA");public static final UnicodeBlock MALAYALAM =new UnicodeBlock("MALAYALAM");public static final UnicodeBlock THAI =new UnicodeBlock("THAI");public static final UnicodeBlock LAO =new UnicodeBlock("LAO");public static final UnicodeBlock TIBETAN =new UnicodeBlock("TIBETAN");public static final UnicodeBlock GEORGIAN =new UnicodeBlock("GEORGIAN");public static final UnicodeBlock HANGUL_JAMO =new UnicodeBlock("HANGUL_JAMO","HANGUL JAMO","HANGULJAMO");public static final UnicodeBlock LATIN_EXTENDED_ADDITIONAL =new UnicodeBlock("LATIN_EXTENDED_ADDITIONAL","LATIN EXTENDED ADDITIONAL","LATINEXTENDEDADDITIONAL");public static final UnicodeBlock GREEK_EXTENDED =new UnicodeBlock("GREEK_EXTENDED","GREEK EXTENDED","GREEKEXTENDED");public static final UnicodeBlock GENERAL_PUNCTUATION =new UnicodeBlock("GENERAL_PUNCTUATION","GENERAL PUNCTUATION","GENERALPUNCTUATION");public static final UnicodeBlock SUPERSCRIPTS_AND_SUBSCRIPTS =new UnicodeBlock("SUPERSCRIPTS_AND_SUBSCRIPTS","SUPERSCRIPTS AND SUBSCRIPTS","SUPERSCRIPTSANDSUBSCRIPTS");public static final UnicodeBlock CURRENCY_SYMBOLS =new UnicodeBlock("CURRENCY_SYMBOLS","CURRENCY SYMBOLS","CURRENCYSYMBOLS");public static final UnicodeBlock COMBINING_MARKS_FOR_SYMBOLS =new UnicodeBlock("COMBINING_MARKS_FOR_SYMBOLS","COMBINING DIACRITICAL MARKS FOR SYMBOLS","COMBININGDIACRITICALMARKSFORSYMBOLS","COMBINING MARKS FOR SYMBOLS","COMBININGMARKSFORSYMBOLS");public static final UnicodeBlock LETTERLIKE_SYMBOLS =new UnicodeBlock("LETTERLIKE_SYMBOLS","LETTERLIKE SYMBOLS","LETTERLIKESYMBOLS");public static final UnicodeBlock NUMBER_FORMS =new UnicodeBlock("NUMBER_FORMS","NUMBER FORMS","NUMBERFORMS");public static final UnicodeBlock ARROWS =new UnicodeBlock("ARROWS");public static final UnicodeBlock MATHEMATICAL_OPERATORS =new UnicodeBlock("MATHEMATICAL_OPERATORS","MATHEMATICAL OPERATORS","MATHEMATICALOPERATORS");public static final UnicodeBlock MISCELLANEOUS_TECHNICAL =new UnicodeBlock("MISCELLANEOUS_TECHNICAL","MISCELLANEOUS TECHNICAL","MISCELLANEOUSTECHNICAL");public static final UnicodeBlock CONTROL_PICTURES =new UnicodeBlock("CONTROL_PICTURES","CONTROL PICTURES","CONTROLPICTURES");public static final UnicodeBlock OPTICAL_CHARACTER_RECOGNITION =new UnicodeBlock("OPTICAL_CHARACTER_RECOGNITION","OPTICAL CHARACTER RECOGNITION","OPTICALCHARACTERRECOGNITION");public static final UnicodeBlock ENCLOSED_ALPHANUMERICS =new UnicodeBlock("ENCLOSED_ALPHANUMERICS","ENCLOSED ALPHANUMERICS","ENCLOSEDALPHANUMERICS");public static final UnicodeBlock BOX_DRAWING =new UnicodeBlock("BOX_DRAWING","BOX DRAWING","BOXDRAWING");public static final UnicodeBlock BLOCK_ELEMENTS =new UnicodeBlock("BLOCK_ELEMENTS","BLOCK ELEMENTS","BLOCKELEMENTS");public static final UnicodeBlock GEOMETRIC_SHAPES =new UnicodeBlock("GEOMETRIC_SHAPES","GEOMETRIC SHAPES","GEOMETRICSHAPES");public static final UnicodeBlock MISCELLANEOUS_SYMBOLS =new UnicodeBlock("MISCELLANEOUS_SYMBOLS","MISCELLANEOUS SYMBOLS","MISCELLANEOUSSYMBOLS");public static final UnicodeBlock DINGBATS =new UnicodeBlock("DINGBATS");public static final UnicodeBlock CJK_SYMBOLS_AND_PUNCTUATION =new UnicodeBlock("CJK_SYMBOLS_AND_PUNCTUATION","CJK SYMBOLS AND PUNCTUATION","CJKSYMBOLSANDPUNCTUATION");public static final UnicodeBlock HIRAGANA =new UnicodeBlock("HIRAGANA");public static final UnicodeBlock KATAKANA =new UnicodeBlock("KATAKANA");public static final UnicodeBlock BOPOMOFO =new UnicodeBlock("BOPOMOFO");public static final UnicodeBlock HANGUL_COMPATIBILITY_JAMO =new UnicodeBlock("HANGUL_COMPATIBILITY_JAMO","HANGUL COMPATIBILITY JAMO","HANGULCOMPATIBILITYJAMO");public static final UnicodeBlock KANBUN =new UnicodeBlock("KANBUN");public static final UnicodeBlock ENCLOSED_CJK_LETTERS_AND_MONTHS =new UnicodeBlock("ENCLOSED_CJK_LETTERS_AND_MONTHS","ENCLOSED CJK LETTERS AND MONTHS","ENCLOSEDCJKLETTERSANDMONTHS");public static final UnicodeBlock CJK_COMPATIBILITY =new UnicodeBlock("CJK_COMPATIBILITY","CJK COMPATIBILITY","CJKCOMPATIBILITY");public static final UnicodeBlock CJK_UNIFIED_IDEOGRAPHS =new UnicodeBlock("CJK_UNIFIED_IDEOGRAPHS","CJK UNIFIED IDEOGRAPHS","CJKUNIFIEDIDEOGRAPHS");public static final UnicodeBlock HANGUL_SYLLABLES =new UnicodeBlock("HANGUL_SYLLABLES","HANGUL SYLLABLES","HANGULSYLLABLES");public static final UnicodeBlock PRIVATE_USE_AREA =new UnicodeBlock("PRIVATE_USE_AREA","PRIVATE USE AREA","PRIVATEUSEAREA");public static final UnicodeBlock CJK_COMPATIBILITY_IDEOGRAPHS =new UnicodeBlock("CJK_COMPATIBILITY_IDEOGRAPHS","CJK COMPATIBILITY IDEOGRAPHS","CJKCOMPATIBILITYIDEOGRAPHS");public static final UnicodeBlock ALPHABETIC_PRESENTATION_FORMS =new UnicodeBlock("ALPHABETIC_PRESENTATION_FORMS","ALPHABETIC PRESENTATION FORMS","ALPHABETICPRESENTATIONFORMS");public static final UnicodeBlock ARABIC_PRESENTATION_FORMS_A =new UnicodeBlock("ARABIC_PRESENTATION_FORMS_A","ARABIC PRESENTATION FORMS-A","ARABICPRESENTATIONFORMS-A");public static final UnicodeBlock COMBINING_HALF_MARKS =new UnicodeBlock("COMBINING_HALF_MARKS","COMBINING HALF MARKS","COMBININGHALFMARKS");public static final UnicodeBlock CJK_COMPATIBILITY_FORMS =new UnicodeBlock("CJK_COMPATIBILITY_FORMS","CJK COMPATIBILITY FORMS","CJKCOMPATIBILITYFORMS");public static final UnicodeBlock SMALL_FORM_VARIANTS =new UnicodeBlock("SMALL_FORM_VARIANTS","SMALL FORM VARIANTS","SMALLFORMVARIANTS");public static final UnicodeBlock ARABIC_PRESENTATION_FORMS_B =new UnicodeBlock("ARABIC_PRESENTATION_FORMS_B","ARABIC PRESENTATION FORMS-B","ARABICPRESENTATIONFORMS-B");public static final UnicodeBlock HALFWIDTH_AND_FULLWIDTH_FORMS =new UnicodeBlock("HALFWIDTH_AND_FULLWIDTH_FORMS","HALFWIDTH AND FULLWIDTH FORMS","HALFWIDTHANDFULLWIDTHFORMS");public static final UnicodeBlock SPECIALS =new UnicodeBlock("SPECIALS");@Deprecatedpublic static final UnicodeBlock SURROGATES_AREA =new UnicodeBlock("SURROGATES_AREA");public static final UnicodeBlock SYRIAC =new UnicodeBlock("SYRIAC");public static final UnicodeBlock THAANA =new UnicodeBlock("THAANA");public static final UnicodeBlock SINHALA =new UnicodeBlock("SINHALA");public static final UnicodeBlock MYANMAR =new UnicodeBlock("MYANMAR");public static final UnicodeBlock ETHIOPIC =new UnicodeBlock("ETHIOPIC");public static final UnicodeBlock CHEROKEE =new UnicodeBlock("CHEROKEE");public static final UnicodeBlock UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS =new UnicodeBlock("UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS","UNIFIED CANADIAN ABORIGINAL SYLLABICS","UNIFIEDCANADIANABORIGINALSYLLABICS");public static final UnicodeBlock OGHAM =new UnicodeBlock("OGHAM");public static final UnicodeBlock RUNIC =new UnicodeBlock("RUNIC");public static final UnicodeBlock KHMER =new UnicodeBlock("KHMER");public static final UnicodeBlock MONGOLIAN =new UnicodeBlock("MONGOLIAN");public static final UnicodeBlock BRAILLE_PATTERNS =new UnicodeBlock("BRAILLE_PATTERNS","BRAILLE PATTERNS","BRAILLEPATTERNS");public static final UnicodeBlock CJK_RADICALS_SUPPLEMENT =new UnicodeBlock("CJK_RADICALS_SUPPLEMENT","CJK RADICALS SUPPLEMENT","CJKRADICALSSUPPLEMENT");public static final UnicodeBlock KANGXI_RADICALS =new UnicodeBlock("KANGXI_RADICALS","KANGXI RADICALS","KANGXIRADICALS");public static final UnicodeBlock IDEOGRAPHIC_DESCRIPTION_CHARACTERS =new UnicodeBlock("IDEOGRAPHIC_DESCRIPTION_CHARACTERS","IDEOGRAPHIC DESCRIPTION CHARACTERS","IDEOGRAPHICDESCRIPTIONCHARACTERS");public static final UnicodeBlock BOPOMOFO_EXTENDED =new UnicodeBlock("BOPOMOFO_EXTENDED","BOPOMOFO EXTENDED","BOPOMOFOEXTENDED");public static final UnicodeBlock CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A =new UnicodeBlock("CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A","CJK UNIFIED IDEOGRAPHS EXTENSION A","CJKUNIFIEDIDEOGRAPHSEXTENSIONA");public static final UnicodeBlock YI_SYLLABLES =new UnicodeBlock("YI_SYLLABLES","YI SYLLABLES","YISYLLABLES");public static final UnicodeBlock YI_RADICALS =new UnicodeBlock("YI_RADICALS","YI RADICALS","YIRADICALS");public static final UnicodeBlock CYRILLIC_SUPPLEMENTARY =new UnicodeBlock("CYRILLIC_SUPPLEMENTARY","CYRILLIC SUPPLEMENTARY","CYRILLICSUPPLEMENTARY","CYRILLIC SUPPLEMENT","CYRILLICSUPPLEMENT");public static final UnicodeBlock TAGALOG =new UnicodeBlock("TAGALOG");public static final UnicodeBlock HANUNOO =new UnicodeBlock("HANUNOO");public static final UnicodeBlock BUHID =new UnicodeBlock("BUHID");public static final UnicodeBlock TAGBANWA =new UnicodeBlock("TAGBANWA");public static final UnicodeBlock LIMBU =new UnicodeBlock("LIMBU");public static final UnicodeBlock TAI_LE =new UnicodeBlock("TAI_LE","TAI LE","TAILE");public static final UnicodeBlock KHMER_SYMBOLS =new UnicodeBlock("KHMER_SYMBOLS","KHMER SYMBOLS","KHMERSYMBOLS");public static final UnicodeBlock PHONETIC_EXTENSIONS =new UnicodeBlock("PHONETIC_EXTENSIONS","PHONETIC EXTENSIONS","PHONETICEXTENSIONS");public static final UnicodeBlock MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A =new UnicodeBlock("MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A","MISCELLANEOUS MATHEMATICAL SYMBOLS-A","MISCELLANEOUSMATHEMATICALSYMBOLS-A");public static final UnicodeBlock SUPPLEMENTAL_ARROWS_A =new UnicodeBlock("SUPPLEMENTAL_ARROWS_A","SUPPLEMENTAL ARROWS-A","SUPPLEMENTALARROWS-A");public static final UnicodeBlock SUPPLEMENTAL_ARROWS_B =new UnicodeBlock("SUPPLEMENTAL_ARROWS_B","SUPPLEMENTAL ARROWS-B","SUPPLEMENTALARROWS-B");public static final UnicodeBlock MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B =new UnicodeBlock("MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B","MISCELLANEOUS MATHEMATICAL SYMBOLS-B","MISCELLANEOUSMATHEMATICALSYMBOLS-B");public static final UnicodeBlock SUPPLEMENTAL_MATHEMATICAL_OPERATORS =new UnicodeBlock("SUPPLEMENTAL_MATHEMATICAL_OPERATORS","SUPPLEMENTAL MATHEMATICAL OPERATORS","SUPPLEMENTALMATHEMATICALOPERATORS");public static final UnicodeBlock MISCELLANEOUS_SYMBOLS_AND_ARROWS =new UnicodeBlock("MISCELLANEOUS_SYMBOLS_AND_ARROWS","MISCELLANEOUS SYMBOLS AND ARROWS","MISCELLANEOUSSYMBOLSANDARROWS");public static final UnicodeBlock KATAKANA_PHONETIC_EXTENSIONS =new UnicodeBlock("KATAKANA_PHONETIC_EXTENSIONS","KATAKANA PHONETIC EXTENSIONS","KATAKANAPHONETICEXTENSIONS");public static final UnicodeBlock YIJING_HEXAGRAM_SYMBOLS =new UnicodeBlock("YIJING_HEXAGRAM_SYMBOLS","YIJING HEXAGRAM SYMBOLS","YIJINGHEXAGRAMSYMBOLS");public static final UnicodeBlock VARIATION_SELECTORS =new UnicodeBlock("VARIATION_SELECTORS","VARIATION SELECTORS","VARIATIONSELECTORS");public static final UnicodeBlock LINEAR_B_SYLLABARY =new UnicodeBlock("LINEAR_B_SYLLABARY","LINEAR B SYLLABARY","LINEARBSYLLABARY");public static final UnicodeBlock LINEAR_B_IDEOGRAMS =new UnicodeBlock("LINEAR_B_IDEOGRAMS","LINEAR B IDEOGRAMS","LINEARBIDEOGRAMS");public static final UnicodeBlock AEGEAN_NUMBERS =new UnicodeBlock("AEGEAN_NUMBERS","AEGEAN NUMBERS","AEGEANNUMBERS");public static final UnicodeBlock OLD_ITALIC =new UnicodeBlock("OLD_ITALIC","OLD ITALIC","OLDITALIC");public static final UnicodeBlock GOTHIC =new UnicodeBlock("GOTHIC");public static final UnicodeBlock UGARITIC =new UnicodeBlock("UGARITIC");public static final UnicodeBlock DESERET =new UnicodeBlock("DESERET");public static final UnicodeBlock SHAVIAN =new UnicodeBlock("SHAVIAN");public static final UnicodeBlock OSMANYA =new UnicodeBlock("OSMANYA");public static final UnicodeBlock CYPRIOT_SYLLABARY =new UnicodeBlock("CYPRIOT_SYLLABARY","CYPRIOT SYLLABARY","CYPRIOTSYLLABARY");public static final UnicodeBlock BYZANTINE_MUSICAL_SYMBOLS =new UnicodeBlock("BYZANTINE_MUSICAL_SYMBOLS","BYZANTINE MUSICAL SYMBOLS","BYZANTINEMUSICALSYMBOLS");public static final UnicodeBlock MUSICAL_SYMBOLS =new UnicodeBlock("MUSICAL_SYMBOLS","MUSICAL SYMBOLS","MUSICALSYMBOLS");public static final UnicodeBlock TAI_XUAN_JING_SYMBOLS =new UnicodeBlock("TAI_XUAN_JING_SYMBOLS","TAI XUAN JING SYMBOLS","TAIXUANJINGSYMBOLS");public static final UnicodeBlock MATHEMATICAL_ALPHANUMERIC_SYMBOLS =new UnicodeBlock("MATHEMATICAL_ALPHANUMERIC_SYMBOLS","MATHEMATICAL ALPHANUMERIC SYMBOLS","MATHEMATICALALPHANUMERICSYMBOLS");public static final UnicodeBlock CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B =new UnicodeBlock("CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B","CJK UNIFIED IDEOGRAPHS EXTENSION B","CJKUNIFIEDIDEOGRAPHSEXTENSIONB");public static final UnicodeBlock CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT =new UnicodeBlock("CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT","CJK COMPATIBILITY IDEOGRAPHS SUPPLEMENT","CJKCOMPATIBILITYIDEOGRAPHSSUPPLEMENT");public static final UnicodeBlock TAGS =new UnicodeBlock("TAGS");public static final UnicodeBlock VARIATION_SELECTORS_SUPPLEMENT =new UnicodeBlock("VARIATION_SELECTORS_SUPPLEMENT","VARIATION SELECTORS SUPPLEMENT","VARIATIONSELECTORSSUPPLEMENT");public static final UnicodeBlock SUPPLEMENTARY_PRIVATE_USE_AREA_A =new UnicodeBlock("SUPPLEMENTARY_PRIVATE_USE_AREA_A","SUPPLEMENTARY PRIVATE USE AREA-A","SUPPLEMENTARYPRIVATEUSEAREA-A");public static final UnicodeBlock SUPPLEMENTARY_PRIVATE_USE_AREA_B =new UnicodeBlock("SUPPLEMENTARY_PRIVATE_USE_AREA_B","SUPPLEMENTARY PRIVATE USE AREA-B","SUPPLEMENTARYPRIVATEUSEAREA-B");public static final UnicodeBlock HIGH_SURROGATES =new UnicodeBlock("HIGH_SURROGATES","HIGH SURROGATES","HIGHSURROGATES");public static final UnicodeBlock HIGH_PRIVATE_USE_SURROGATES =new UnicodeBlock("HIGH_PRIVATE_USE_SURROGATES","HIGH PRIVATE USE SURROGATES","HIGHPRIVATEUSESURROGATES");public static final UnicodeBlock LOW_SURROGATES =new UnicodeBlock("LOW_SURROGATES","LOW SURROGATES","LOWSURROGATES");public static final UnicodeBlock ARABIC_SUPPLEMENT =new UnicodeBlock("ARABIC_SUPPLEMENT","ARABIC SUPPLEMENT","ARABICSUPPLEMENT");public static final UnicodeBlock NKO =new UnicodeBlock("NKO");public static final UnicodeBlock SAMARITAN =new UnicodeBlock("SAMARITAN");public static final UnicodeBlock MANDAIC =new UnicodeBlock("MANDAIC");public static final UnicodeBlock ETHIOPIC_SUPPLEMENT =new UnicodeBlock("ETHIOPIC_SUPPLEMENT","ETHIOPIC SUPPLEMENT","ETHIOPICSUPPLEMENT");public static final UnicodeBlock UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED =new UnicodeBlock("UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED","UNIFIED CANADIAN ABORIGINAL SYLLABICS EXTENDED","UNIFIEDCANADIANABORIGINALSYLLABICSEXTENDED");public static final UnicodeBlock NEW_TAI_LUE =new UnicodeBlock("NEW_TAI_LUE","NEW TAI LUE","NEWTAILUE");public static final UnicodeBlock BUGINESE =new UnicodeBlock("BUGINESE");public static final UnicodeBlock TAI_THAM =new UnicodeBlock("TAI_THAM","TAI THAM","TAITHAM");public static final UnicodeBlock BALINESE =new UnicodeBlock("BALINESE");public static final UnicodeBlock SUNDANESE =new UnicodeBlock("SUNDANESE");public static final UnicodeBlock BATAK =new UnicodeBlock("BATAK");public static final UnicodeBlock LEPCHA =new UnicodeBlock("LEPCHA");public static final UnicodeBlock OL_CHIKI =new UnicodeBlock("OL_CHIKI","OL CHIKI","OLCHIKI");public static final UnicodeBlock VEDIC_EXTENSIONS =new UnicodeBlock("VEDIC_EXTENSIONS","VEDIC EXTENSIONS","VEDICEXTENSIONS");public static final UnicodeBlock PHONETIC_EXTENSIONS_SUPPLEMENT =new UnicodeBlock("PHONETIC_EXTENSIONS_SUPPLEMENT","PHONETIC EXTENSIONS SUPPLEMENT","PHONETICEXTENSIONSSUPPLEMENT");public static final UnicodeBlock COMBINING_DIACRITICAL_MARKS_SUPPLEMENT =new UnicodeBlock("COMBINING_DIACRITICAL_MARKS_SUPPLEMENT","COMBINING DIACRITICAL MARKS SUPPLEMENT","COMBININGDIACRITICALMARKSSUPPLEMENT");public static final UnicodeBlock GLAGOLITIC =new UnicodeBlock("GLAGOLITIC");public static final UnicodeBlock LATIN_EXTENDED_C =new UnicodeBlock("LATIN_EXTENDED_C","LATIN EXTENDED-C","LATINEXTENDED-C");public static final UnicodeBlock COPTIC =new UnicodeBlock("COPTIC");public static final UnicodeBlock GEORGIAN_SUPPLEMENT =new UnicodeBlock("GEORGIAN_SUPPLEMENT","GEORGIAN SUPPLEMENT","GEORGIANSUPPLEMENT");public static final UnicodeBlock TIFINAGH =new UnicodeBlock("TIFINAGH");public static final UnicodeBlock ETHIOPIC_EXTENDED =new UnicodeBlock("ETHIOPIC_EXTENDED","ETHIOPIC EXTENDED","ETHIOPICEXTENDED");public static final UnicodeBlock CYRILLIC_EXTENDED_A =new UnicodeBlock("CYRILLIC_EXTENDED_A","CYRILLIC EXTENDED-A","CYRILLICEXTENDED-A");public static final UnicodeBlock SUPPLEMENTAL_PUNCTUATION =new UnicodeBlock("SUPPLEMENTAL_PUNCTUATION","SUPPLEMENTAL PUNCTUATION","SUPPLEMENTALPUNCTUATION");public static final UnicodeBlock CJK_STROKES =new UnicodeBlock("CJK_STROKES","CJK STROKES","CJKSTROKES");public static final UnicodeBlock LISU =new UnicodeBlock("LISU");public static final UnicodeBlock VAI =new UnicodeBlock("VAI");public static final UnicodeBlock CYRILLIC_EXTENDED_B =new UnicodeBlock("CYRILLIC_EXTENDED_B","CYRILLIC EXTENDED-B","CYRILLICEXTENDED-B");public static final UnicodeBlock BAMUM =new UnicodeBlock("BAMUM");public static final UnicodeBlock MODIFIER_TONE_LETTERS =new UnicodeBlock("MODIFIER_TONE_LETTERS","MODIFIER TONE LETTERS","MODIFIERTONELETTERS");public static final UnicodeBlock LATIN_EXTENDED_D =new UnicodeBlock("LATIN_EXTENDED_D","LATIN EXTENDED-D","LATINEXTENDED-D");public static final UnicodeBlock SYLOTI_NAGRI =new UnicodeBlock("SYLOTI_NAGRI","SYLOTI NAGRI","SYLOTINAGRI");public static final UnicodeBlock COMMON_INDIC_NUMBER_FORMS =new UnicodeBlock("COMMON_INDIC_NUMBER_FORMS","COMMON INDIC NUMBER FORMS","COMMONINDICNUMBERFORMS");public static final UnicodeBlock PHAGS_PA =new UnicodeBlock("PHAGS_PA","PHAGS-PA");public static final UnicodeBlock SAURASHTRA =new UnicodeBlock("SAURASHTRA");public static final UnicodeBlock DEVANAGARI_EXTENDED =new UnicodeBlock("DEVANAGARI_EXTENDED","DEVANAGARI EXTENDED","DEVANAGARIEXTENDED");public static final UnicodeBlock KAYAH_LI =new UnicodeBlock("KAYAH_LI","KAYAH LI","KAYAHLI");public static final UnicodeBlock REJANG =new UnicodeBlock("REJANG");public static final UnicodeBlock HANGUL_JAMO_EXTENDED_A =new UnicodeBlock("HANGUL_JAMO_EXTENDED_A","HANGUL JAMO EXTENDED-A","HANGULJAMOEXTENDED-A");public static final UnicodeBlock JAVANESE =new UnicodeBlock("JAVANESE");public static final UnicodeBlock CHAM =new UnicodeBlock("CHAM");public static final UnicodeBlock MYANMAR_EXTENDED_A =new UnicodeBlock("MYANMAR_EXTENDED_A","MYANMAR EXTENDED-A","MYANMAREXTENDED-A");public static final UnicodeBlock TAI_VIET =new UnicodeBlock("TAI_VIET","TAI VIET","TAIVIET");public static final UnicodeBlock ETHIOPIC_EXTENDED_A =new UnicodeBlock("ETHIOPIC_EXTENDED_A","ETHIOPIC EXTENDED-A","ETHIOPICEXTENDED-A");public static final UnicodeBlock MEETEI_MAYEK =new UnicodeBlock("MEETEI_MAYEK","MEETEI MAYEK","MEETEIMAYEK");public static final UnicodeBlock HANGUL_JAMO_EXTENDED_B =new UnicodeBlock("HANGUL_JAMO_EXTENDED_B","HANGUL JAMO EXTENDED-B","HANGULJAMOEXTENDED-B");public static final UnicodeBlock VERTICAL_FORMS =new UnicodeBlock("VERTICAL_FORMS","VERTICAL FORMS","VERTICALFORMS");public static final UnicodeBlock ANCIENT_GREEK_NUMBERS =new UnicodeBlock("ANCIENT_GREEK_NUMBERS","ANCIENT GREEK NUMBERS","ANCIENTGREEKNUMBERS");public static final UnicodeBlock ANCIENT_SYMBOLS =new UnicodeBlock("ANCIENT_SYMBOLS","ANCIENT SYMBOLS","ANCIENTSYMBOLS");public static final UnicodeBlock PHAISTOS_DISC =new UnicodeBlock("PHAISTOS_DISC","PHAISTOS DISC","PHAISTOSDISC");public static final UnicodeBlock LYCIAN =new UnicodeBlock("LYCIAN");public static final UnicodeBlock CARIAN =new UnicodeBlock("CARIAN");public static final UnicodeBlock OLD_PERSIAN =new UnicodeBlock("OLD_PERSIAN","OLD PERSIAN","OLDPERSIAN");public static final UnicodeBlock IMPERIAL_ARAMAIC =new UnicodeBlock("IMPERIAL_ARAMAIC","IMPERIAL ARAMAIC","IMPERIALARAMAIC");public static final UnicodeBlock PHOENICIAN =new UnicodeBlock("PHOENICIAN");public static final UnicodeBlock LYDIAN =new UnicodeBlock("LYDIAN");public static final UnicodeBlock KHAROSHTHI =new UnicodeBlock("KHAROSHTHI");public static final UnicodeBlock OLD_SOUTH_ARABIAN =new UnicodeBlock("OLD_SOUTH_ARABIAN","OLD SOUTH ARABIAN","OLDSOUTHARABIAN");public static final UnicodeBlock AVESTAN =new UnicodeBlock("AVESTAN");public static final UnicodeBlock INSCRIPTIONAL_PARTHIAN =new UnicodeBlock("INSCRIPTIONAL_PARTHIAN","INSCRIPTIONAL PARTHIAN","INSCRIPTIONALPARTHIAN");public static final UnicodeBlock INSCRIPTIONAL_PAHLAVI =new UnicodeBlock("INSCRIPTIONAL_PAHLAVI","INSCRIPTIONAL PAHLAVI","INSCRIPTIONALPAHLAVI");public static final UnicodeBlock OLD_TURKIC =new UnicodeBlock("OLD_TURKIC","OLD TURKIC","OLDTURKIC");public static final UnicodeBlock RUMI_NUMERAL_SYMBOLS =new UnicodeBlock("RUMI_NUMERAL_SYMBOLS","RUMI NUMERAL SYMBOLS","RUMINUMERALSYMBOLS");public static final UnicodeBlock BRAHMI =new UnicodeBlock("BRAHMI");public static final UnicodeBlock KAITHI =new UnicodeBlock("KAITHI");public static final UnicodeBlock CUNEIFORM =new UnicodeBlock("CUNEIFORM");public static final UnicodeBlock CUNEIFORM_NUMBERS_AND_PUNCTUATION =new UnicodeBlock("CUNEIFORM_NUMBERS_AND_PUNCTUATION","CUNEIFORM NUMBERS AND PUNCTUATION","CUNEIFORMNUMBERSANDPUNCTUATION");public static final UnicodeBlock EGYPTIAN_HIEROGLYPHS =new UnicodeBlock("EGYPTIAN_HIEROGLYPHS","EGYPTIAN HIEROGLYPHS","EGYPTIANHIEROGLYPHS");public static final UnicodeBlock BAMUM_SUPPLEMENT =new UnicodeBlock("BAMUM_SUPPLEMENT","BAMUM SUPPLEMENT","BAMUMSUPPLEMENT");public static final UnicodeBlock KANA_SUPPLEMENT =new UnicodeBlock("KANA_SUPPLEMENT","KANA SUPPLEMENT","KANASUPPLEMENT");public static final UnicodeBlock ANCIENT_GREEK_MUSICAL_NOTATION =new UnicodeBlock("ANCIENT_GREEK_MUSICAL_NOTATION","ANCIENT GREEK MUSICAL NOTATION","ANCIENTGREEKMUSICALNOTATION");public static final UnicodeBlock COUNTING_ROD_NUMERALS =new UnicodeBlock("COUNTING_ROD_NUMERALS","COUNTING ROD NUMERALS","COUNTINGRODNUMERALS");public static final UnicodeBlock MAHJONG_TILES =new UnicodeBlock("MAHJONG_TILES","MAHJONG TILES","MAHJONGTILES");public static final UnicodeBlock DOMINO_TILES =new UnicodeBlock("DOMINO_TILES","DOMINO TILES","DOMINOTILES");public static final UnicodeBlock PLAYING_CARDS =new UnicodeBlock("PLAYING_CARDS","PLAYING CARDS","PLAYINGCARDS");public static final UnicodeBlock ENCLOSED_ALPHANUMERIC_SUPPLEMENT =new UnicodeBlock("ENCLOSED_ALPHANUMERIC_SUPPLEMENT","ENCLOSED ALPHANUMERIC SUPPLEMENT","ENCLOSEDALPHANUMERICSUPPLEMENT");public static final UnicodeBlock ENCLOSED_IDEOGRAPHIC_SUPPLEMENT =new UnicodeBlock("ENCLOSED_IDEOGRAPHIC_SUPPLEMENT","ENCLOSED IDEOGRAPHIC SUPPLEMENT","ENCLOSEDIDEOGRAPHICSUPPLEMENT");public static final UnicodeBlock MISCELLANEOUS_SYMBOLS_AND_PICTOGRAPHS =new UnicodeBlock("MISCELLANEOUS_SYMBOLS_AND_PICTOGRAPHS","MISCELLANEOUS SYMBOLS AND PICTOGRAPHS","MISCELLANEOUSSYMBOLSANDPICTOGRAPHS");public static final UnicodeBlock EMOTICONS =new UnicodeBlock("EMOTICONS");public static final UnicodeBlock TRANSPORT_AND_MAP_SYMBOLS =new UnicodeBlock("TRANSPORT_AND_MAP_SYMBOLS","TRANSPORT AND MAP SYMBOLS","TRANSPORTANDMAPSYMBOLS");public static final UnicodeBlock ALCHEMICAL_SYMBOLS =new UnicodeBlock("ALCHEMICAL_SYMBOLS","ALCHEMICAL SYMBOLS","ALCHEMICALSYMBOLS");public static final UnicodeBlock CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C =new UnicodeBlock("CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C","CJK UNIFIED IDEOGRAPHS EXTENSION C","CJKUNIFIEDIDEOGRAPHSEXTENSIONC");public static final UnicodeBlock CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D =new UnicodeBlock("CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D","CJK UNIFIED IDEOGRAPHS EXTENSION D","CJKUNIFIEDIDEOGRAPHSEXTENSIOND");public static final UnicodeBlock ARABIC_EXTENDED_A =new UnicodeBlock("ARABIC_EXTENDED_A","ARABIC EXTENDED-A","ARABICEXTENDED-A");public static final UnicodeBlock SUNDANESE_SUPPLEMENT =new UnicodeBlock("SUNDANESE_SUPPLEMENT","SUNDANESE SUPPLEMENT","SUNDANESESUPPLEMENT");public static final UnicodeBlock MEETEI_MAYEK_EXTENSIONS =new UnicodeBlock("MEETEI_MAYEK_EXTENSIONS","MEETEI MAYEK EXTENSIONS","MEETEIMAYEKEXTENSIONS");public static final UnicodeBlock MEROITIC_HIEROGLYPHS =new UnicodeBlock("MEROITIC_HIEROGLYPHS","MEROITIC HIEROGLYPHS","MEROITICHIEROGLYPHS");public static final UnicodeBlock MEROITIC_CURSIVE =new UnicodeBlock("MEROITIC_CURSIVE","MEROITIC CURSIVE","MEROITICCURSIVE");public static final UnicodeBlock SORA_SOMPENG =new UnicodeBlock("SORA_SOMPENG","SORA SOMPENG","SORASOMPENG");public static final UnicodeBlock CHAKMA =new UnicodeBlock("CHAKMA");public static final UnicodeBlock SHARADA =new UnicodeBlock("SHARADA");public static final UnicodeBlock TAKRI =new UnicodeBlock("TAKRI");public static final UnicodeBlock MIAO =new UnicodeBlock("MIAO");public static final UnicodeBlock ARABIC_MATHEMATICAL_ALPHABETIC_SYMBOLS =new UnicodeBlock("ARABIC_MATHEMATICAL_ALPHABETIC_SYMBOLS","ARABIC MATHEMATICAL ALPHABETIC SYMBOLS","ARABICMATHEMATICALALPHABETICSYMBOLS");private static final int blockStarts[] = {0x0000,0x0080,0x0100,0x0180,0x0250,0x02B0,0x0300,0x0370,0x0400,0x0500,0x0530,0x0590,0x0600,0x0700,0x0750,0x0780,0x07C0,0x0800,0x0840,0x0860,0x08A0,0x0900,0x0980,0x0A00,0x0A80,0x0B00,0x0B80,0x0C00,0x0C80,0x0D00,0x0D80,0x0E00,0x0E80,0x0F00,0x1000,0x10A0,0x1100,0x1200,0x1380,0x13A0,0x1400,0x1680,0x16A0,0x1700,0x1720,0x1740,0x1760,0x1780,0x1800,0x18B0,0x1900,0x1950,0x1980,0x19E0,0x1A00,0x1A20,0x1AB0,0x1B00,0x1B80,0x1BC0,0x1C00,0x1C50,0x1C80,0x1CC0,0x1CD0,0x1D00,0x1D80,0x1DC0,0x1E00,0x1F00,0x2000,0x2070,0x20A0,0x20D0,0x2100,0x2150,0x2190,0x2200,0x2300,0x2400,0x2440,0x2460,0x2500,0x2580,0x25A0,0x2600,0x2700,0x27C0,0x27F0,0x2800,0x2900,0x2980,0x2A00,0x2B00,0x2C00,0x2C60,0x2C80,0x2D00,0x2D30,0x2D80,0x2DE0,0x2E00,0x2E80,0x2F00,0x2FE0,0x2FF0,0x3000,0x3040,0x30A0,0x3100,0x3130,0x3190,0x31A0,0x31C0,0x31F0,0x3200,0x3300,0x3400,0x4DC0,0x4E00,0xA000,0xA490,0xA4D0,0xA500,0xA640,0xA6A0,0xA700,0xA720,0xA800,0xA830,0xA840,0xA880,0xA8E0,0xA900,0xA930,0xA960,0xA980,0xA9E0,0xAA00,0xAA60,0xAA80,0xAAE0,0xAB00,0xAB30,0xABC0,0xAC00,0xD7B0,0xD800,0xDB80,0xDC00,0xE000,0xF900,0xFB00,0xFB50,0xFE00,0xFE10,0xFE20,0xFE30,0xFE50,0xFE70,0xFF00,0xFFF0,0x10000,0x10080,0x10100,0x10140,0x10190,0x101D0,0x10200,0x10280,0x102A0,0x102E0,0x10300,0x10330,0x10350,0x10380,0x103A0,0x103E0,0x10400,0x10450,0x10480,0x104B0,0x10800,0x10840,0x10860,0x10900,0x10920,0x10940,0x10980,0x109A0,0x10A00,0x10A60,0x10A80,0x10B00,0x10B40,0x10B60,0x10B80,0x10C00,0x10C50,0x10E60,0x10E80,0x11000,0x11080,0x110D0,0x11100,0x11150,0x11180,0x111E0,0x11680,0x116D0,0x12000,0x12400,0x12480,0x13000,0x13430,0x16800,0x16A40,0x16F00,0x16FA0,0x1B000,0x1B100,0x1D000,0x1D100,0x1D200,0x1D250,0x1D300,0x1D360,0x1D380,0x1D400,0x1D800,0x1EE00,0x1EF00,0x1F000,0x1F030,0x1F0A0,0x1F100,0x1F200,0x1F300,0x1F600,0x1F650,0x1F680,0x1F700,0x1F780,0x20000,0x2A6E0,0x2A700,0x2B740,0x2B820,0x2F800,0x2FA20,0xE0000,0xE0080,0xE0100,0xE01F0,0xF0000,0x100000};private static final UnicodeBlock[] blocks = {BASIC_LATIN,LATIN_1_SUPPLEMENT,LATIN_EXTENDED_A,LATIN_EXTENDED_B,IPA_EXTENSIONS,SPACING_MODIFIER_LETTERS,COMBINING_DIACRITICAL_MARKS,GREEK,CYRILLIC,CYRILLIC_SUPPLEMENTARY,ARMENIAN,HEBREW,ARABIC,SYRIAC,ARABIC_SUPPLEMENT,THAANA,NKO,SAMARITAN,MANDAIC,null,ARABIC_EXTENDED_A,DEVANAGARI,BENGALI,GURMUKHI,GUJARATI,ORIYA,TAMIL,TELUGU,KANNADA,MALAYALAM,SINHALA,THAI,LAO,TIBETAN,MYANMAR,GEORGIAN,HANGUL_JAMO,ETHIOPIC,ETHIOPIC_SUPPLEMENT,CHEROKEE,UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS,OGHAM,RUNIC,TAGALOG,HANUNOO,BUHID,TAGBANWA,KHMER,MONGOLIAN,UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED,LIMBU,TAI_LE,NEW_TAI_LUE,KHMER_SYMBOLS,BUGINESE,TAI_THAM,null,BALINESE,SUNDANESE,BATAK,LEPCHA,OL_CHIKI,null,SUNDANESE_SUPPLEMENT,VEDIC_EXTENSIONS,PHONETIC_EXTENSIONS,PHONETIC_EXTENSIONS_SUPPLEMENT,COMBINING_DIACRITICAL_MARKS_SUPPLEMENT,LATIN_EXTENDED_ADDITIONAL,GREEK_EXTENDED,GENERAL_PUNCTUATION,SUPERSCRIPTS_AND_SUBSCRIPTS,CURRENCY_SYMBOLS,COMBINING_MARKS_FOR_SYMBOLS,LETTERLIKE_SYMBOLS,NUMBER_FORMS,ARROWS,MATHEMATICAL_OPERATORS,MISCELLANEOUS_TECHNICAL,CONTROL_PICTURES,OPTICAL_CHARACTER_RECOGNITION,ENCLOSED_ALPHANUMERICS,BOX_DRAWING,BLOCK_ELEMENTS,GEOMETRIC_SHAPES,MISCELLANEOUS_SYMBOLS,DINGBATS,MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A,SUPPLEMENTAL_ARROWS_A,BRAILLE_PATTERNS,SUPPLEMENTAL_ARROWS_B,MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B,SUPPLEMENTAL_MATHEMATICAL_OPERATORS,MISCELLANEOUS_SYMBOLS_AND_ARROWS,GLAGOLITIC,LATIN_EXTENDED_C,COPTIC,GEORGIAN_SUPPLEMENT,TIFINAGH,ETHIOPIC_EXTENDED,CYRILLIC_EXTENDED_A,SUPPLEMENTAL_PUNCTUATION,CJK_RADICALS_SUPPLEMENT,KANGXI_RADICALS,null,IDEOGRAPHIC_DESCRIPTION_CHARACTERS,CJK_SYMBOLS_AND_PUNCTUATION,HIRAGANA,KATAKANA,BOPOMOFO,HANGUL_COMPATIBILITY_JAMO,KANBUN,BOPOMOFO_EXTENDED,CJK_STROKES,KATAKANA_PHONETIC_EXTENSIONS,ENCLOSED_CJK_LETTERS_AND_MONTHS,CJK_COMPATIBILITY,CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A,YIJING_HEXAGRAM_SYMBOLS,CJK_UNIFIED_IDEOGRAPHS,YI_SYLLABLES,YI_RADICALS,LISU,VAI,CYRILLIC_EXTENDED_B,BAMUM,MODIFIER_TONE_LETTERS,LATIN_EXTENDED_D,SYLOTI_NAGRI,COMMON_INDIC_NUMBER_FORMS,PHAGS_PA,SAURASHTRA,DEVANAGARI_EXTENDED,KAYAH_LI,REJANG,HANGUL_JAMO_EXTENDED_A,JAVANESE,null,CHAM,MYANMAR_EXTENDED_A,TAI_VIET,MEETEI_MAYEK_EXTENSIONS,ETHIOPIC_EXTENDED_A,null,MEETEI_MAYEK,HANGUL_SYLLABLES,HANGUL_JAMO_EXTENDED_B,HIGH_SURROGATES,HIGH_PRIVATE_USE_SURROGATES,LOW_SURROGATES,PRIVATE_USE_AREA,CJK_COMPATIBILITY_IDEOGRAPHS,ALPHABETIC_PRESENTATION_FORMS,ARABIC_PRESENTATION_FORMS_A,VARIATION_SELECTORS,VERTICAL_FORMS,COMBINING_HALF_MARKS,CJK_COMPATIBILITY_FORMS,SMALL_FORM_VARIANTS,ARABIC_PRESENTATION_FORMS_B,HALFWIDTH_AND_FULLWIDTH_FORMS,SPECIALS,LINEAR_B_SYLLABARY,LINEAR_B_IDEOGRAMS,AEGEAN_NUMBERS,ANCIENT_GREEK_NUMBERS,ANCIENT_SYMBOLS,PHAISTOS_DISC,null,LYCIAN,CARIAN,null,OLD_ITALIC,GOTHIC,null,UGARITIC,OLD_PERSIAN,null,DESERET,SHAVIAN,OSMANYA,null,CYPRIOT_SYLLABARY,IMPERIAL_ARAMAIC,null,PHOENICIAN,LYDIAN,null,MEROITIC_HIEROGLYPHS,MEROITIC_CURSIVE,KHAROSHTHI,OLD_SOUTH_ARABIAN,null,AVESTAN,INSCRIPTIONAL_PARTHIAN,INSCRIPTIONAL_PAHLAVI,null,OLD_TURKIC,null,RUMI_NUMERAL_SYMBOLS,null,BRAHMI,KAITHI,SORA_SOMPENG,CHAKMA,null,SHARADA,null,TAKRI,null,CUNEIFORM,CUNEIFORM_NUMBERS_AND_PUNCTUATION,null,EGYPTIAN_HIEROGLYPHS,null,BAMUM_SUPPLEMENT,null,MIAO,null,KANA_SUPPLEMENT,null,BYZANTINE_MUSICAL_SYMBOLS,MUSICAL_SYMBOLS,ANCIENT_GREEK_MUSICAL_NOTATION,null,TAI_XUAN_JING_SYMBOLS,COUNTING_ROD_NUMERALS,null,MATHEMATICAL_ALPHANUMERIC_SYMBOLS,null,ARABIC_MATHEMATICAL_ALPHABETIC_SYMBOLS,null,MAHJONG_TILES,DOMINO_TILES,PLAYING_CARDS,ENCLOSED_ALPHANUMERIC_SUPPLEMENT,ENCLOSED_IDEOGRAPHIC_SUPPLEMENT,MISCELLANEOUS_SYMBOLS_AND_PICTOGRAPHS,EMOTICONS,null,TRANSPORT_AND_MAP_SYMBOLS,ALCHEMICAL_SYMBOLS,null,CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B,null,CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C,CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D,null,CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT,null,TAGS,null,VARIATION_SELECTORS_SUPPLEMENT,null,SUPPLEMENTARY_PRIVATE_USE_AREA_A,SUPPLEMENTARY_PRIVATE_USE_AREA_B};/*** 返回表示包含给定字符,或Unicode的块中的对象 null如果字符不是一个定义的块中的一员*/public static UnicodeBlock of(char c) {return of((int)c);}/*** 返回表示包含给定字符(Unicode代码点)Unicode的块中的对象,或 null如果字符是不限定的块中的一员*/public static UnicodeBlock of(int codePoint) {if (!isValidCodePoint(codePoint)) {throw new IllegalArgumentException();}int top, bottom, current;bottom = 0;top = blockStarts.length;current = top/2;while (top - bottom > 1) {if (codePoint >= blockStarts[current]) {bottom = current;} else {top = current;}current = (top + bottom) / 2;}return blocks[current];}/*** 返回具有给定名称的UnicodeBlock*/public static final UnicodeBlock forName(String blockName) {UnicodeBlock block = map.get(blockName.toUpperCase(Locale.US));if (block == null) {throw new IllegalArgumentException();}return block;}}/*** 静态枚举类UnicodeScript*/public static enum UnicodeScript {COMMON,LATIN,GREEK,CYRILLIC,ARMENIAN,HEBREW,ARABIC,SYRIAC,THAANA,DEVANAGARI,BENGALI,GURMUKHI,GUJARATI,ORIYA,TAMIL,TELUGU,KANNADA,MALAYALAM,SINHALA,THAI,LAO,TIBETAN,MYANMAR,GEORGIAN,HANGUL,ETHIOPIC,CHEROKEE,CANADIAN_ABORIGINAL,OGHAM,RUNIC,KHMER,MONGOLIAN,HIRAGANA,KATAKANA,BOPOMOFO,HAN,YI,OLD_ITALIC,GOTHIC,DESERET,INHERITED,TAGALOG,HANUNOO,BUHID,TAGBANWA,LIMBU,TAI_LE,LINEAR_B,UGARITIC,SHAVIAN,OSMANYA,CYPRIOT,BRAILLE,BUGINESE,COPTIC,NEW_TAI_LUE,GLAGOLITIC,TIFINAGH,SYLOTI_NAGRI,OLD_PERSIAN,KHAROSHTHI,BALINESE,CUNEIFORM,PHOENICIAN,PHAGS_PA,NKO,SUNDANESE,BATAK,LEPCHA,OL_CHIKI,VAI,SAURASHTRA,KAYAH_LI,REJANG,LYCIAN,CARIAN,LYDIAN,CHAM,TAI_THAM,TAI_VIET,AVESTAN,EGYPTIAN_HIEROGLYPHS,SAMARITAN,MANDAIC,LISU,BAMUM,JAVANESE,MEETEI_MAYEK,IMPERIAL_ARAMAIC,OLD_SOUTH_ARABIAN,INSCRIPTIONAL_PARTHIAN,INSCRIPTIONAL_PAHLAVI,OLD_TURKIC,BRAHMI,KAITHI,MEROITIC_HIEROGLYPHS,MEROITIC_CURSIVE,SORA_SOMPENG,CHAKMA,SHARADA,TAKRI,MIAO,UNKNOWN;private static final int[] scriptStarts = {0x0000,0x0041,0x005B,0x0061,0x007B,0x00AA,0x00AB,0x00BA,0x00BB,0x00C0,0x00D7,0x00D8,0x00F7,0x00F8,0x02B9,0x02E0,0x02E5,0x02EA,0x02EC,0x0300,0x0370,0x0374,0x0375,0x037E,0x0384,0x0385,0x0386,0x0387,0x0388,0x03E2,0x03F0,0x0400,0x0485,0x0487,0x0531,0x0589,0x058A,0x0591,0x0600,0x060C,0x060D,0x061B,0x061E,0x061F,0x0620,0x0640,0x0641,0x064B,0x0656,0x0660,0x066A,0x0670,0x0671,0x06DD,0x06DE,0x0700,0x0750,0x0780,0x07C0,0x0800,0x0840,0x08A0,0x0900,0x0951,0x0953,0x0964,0x0966,0x0981,0x0A01,0x0A81,0x0B01,0x0B82,0x0C01,0x0C82,0x0D02,0x0D82,0x0E01,0x0E3F,0x0E40,0x0E81,0x0F00,0x0FD5,0x0FD9,0x1000,0x10A0,0x10FB,0x10FC,0x1100,0x1200,0x13A0,0x1400,0x1680,0x16A0,0x16EB,0x16EE,0x1700,0x1720,0x1735,0x1740,0x1760,0x1780,0x1800,0x1802,0x1804,0x1805,0x1806,0x18B0,0x1900,0x1950,0x1980,0x19E0,0x1A00,0x1A20,0x1B00,0x1B80,0x1BC0,0x1C00,0x1C50,0x1CC0,0x1CD0,0x1CD3,0x1CD4,0x1CE1,0x1CE2,0x1CE9,0x1CED,0x1CEE,0x1CF4,0x1CF5,0x1D00,0x1D26,0x1D2B,0x1D2C,0x1D5D,0x1D62,0x1D66,0x1D6B,0x1D78,0x1D79,0x1DBF,0x1DC0,0x1E00,0x1F00,0x2000,0x200C,0x200E,0x2071,0x2074,0x207F,0x2080,0x2090,0x20A0,0x20D0,0x2100,0x2126,0x2127,0x212A,0x212C,0x2132,0x2133,0x214E,0x214F,0x2160,0x2189,0x2800,0x2900,0x2C00,0x2C60,0x2C80,0x2D00,0x2D30,0x2D80,0x2DE0,0x2E00,0x2E80,0x2FF0,0x3005,0x3006,0x3007,0x3008,0x3021,0x302A,0x302E,0x3030,0x3038,0x303C,0x3041,0x3099,0x309B,0x309D,0x30A0,0x30A1,0x30FB,0x30FD,0x3105,0x3131,0x3190,0x31A0,0x31C0,0x31F0,0x3200,0x3220,0x3260,0x327F,0x32D0,0x32FF,0x3300,0x3358,0x3400,0x4DC0,0x4E00,0xA000,0xA4D0,0xA500,0xA640,0xA6A0,0xA700,0xA722,0xA788,0xA78B,0xA800,0xA830,0xA840,0xA880,0xA8E0,0xA900,0xA930,0xA960,0xA980,0xAA00,0xAA60,0xAA80,0xAAE0,0xAB01,0xABC0,0xAC00,0xD7FC,0xF900,0xFB00,0xFB13,0xFB1D,0xFB50,0xFD3E,0xFD50,0xFDFD,0xFE00,0xFE10,0xFE20,0xFE30,0xFE70,0xFEFF,0xFF21,0xFF3B,0xFF41,0xFF5B,0xFF66,0xFF70,0xFF71,0xFF9E,0xFFA0,0xFFE0,0x10000,0x10100,0x10140,0x10190,0x101FD,0x10280,0x102A0,0x10300,0x10330,0x10380,0x103A0,0x10400,0x10450,0x10480,0x10800,0x10840,0x10900,0x10920,0x10980,0x109A0,0x10A00,0x10A60,0x10B00,0x10B40,0x10B60,0x10C00,0x10E60,0x11000,0x11080,0x110D0,0x11100,0x11180,0x11680,0x12000,0x13000,0x16800,0x16F00,0x1B000,0x1B001,0x1D000,0x1D167,0x1D16A,0x1D17B,0x1D183,0x1D185,0x1D18C,0x1D1AA,0x1D1AE,0x1D200,0x1D300,0x1EE00,0x1F000,0x1F200,0x1F201,0x20000,0xE0001,0xE0100,0xE01F0};private static final UnicodeScript[] scripts = {COMMON,LATIN,COMMON,LATIN,COMMON,LATIN,COMMON,LATIN,COMMON,LATIN,COMMON,LATIN,COMMON,LATIN,COMMON,LATIN,COMMON,BOPOMOFO,COMMON,INHERITED,GREEK,COMMON,GREEK,COMMON,GREEK,COMMON,GREEK,COMMON,GREEK,COPTIC,GREEK,CYRILLIC,INHERITED,CYRILLIC,ARMENIAN,COMMON,ARMENIAN,HEBREW,ARABIC,COMMON,ARABIC,COMMON,ARABIC,COMMON,ARABIC,COMMON,ARABIC,INHERITED,ARABIC,COMMON,ARABIC,INHERITED,ARABIC,COMMON,ARABIC,SYRIAC,ARABIC,THAANA,NKO,SAMARITAN,MANDAIC,ARABIC,DEVANAGARI,INHERITED,DEVANAGARI,COMMON,DEVANAGARI,BENGALI,GURMUKHI,GUJARATI,ORIYA,TAMIL,TELUGU,KANNADA,MALAYALAM,SINHALA,THAI,COMMON,THAI,LAO,TIBETAN,COMMON,TIBETAN,MYANMAR,GEORGIAN,COMMON,GEORGIAN,HANGUL,ETHIOPIC,CHEROKEE,CANADIAN_ABORIGINAL,OGHAM,RUNIC,COMMON,RUNIC,TAGALOG,HANUNOO,COMMON,BUHID,TAGBANWA,KHMER,MONGOLIAN,COMMON,MONGOLIAN,COMMON,MONGOLIAN,CANADIAN_ABORIGINAL,LIMBU,TAI_LE,NEW_TAI_LUE,KHMER,BUGINESE,TAI_THAM,BALINESE,SUNDANESE,BATAK,LEPCHA,OL_CHIKI,SUNDANESE,INHERITED,COMMON,INHERITED,COMMON,INHERITED,COMMON,INHERITED,COMMON,INHERITED,COMMON,LATIN,GREEK,CYRILLIC,LATIN,GREEK,LATIN,GREEK,LATIN,CYRILLIC,LATIN,GREEK,INHERITED,LATIN,GREEK,COMMON,INHERITED,COMMON,LATIN,COMMON,LATIN,COMMON,LATIN,COMMON,INHERITED,COMMON,GREEK,COMMON,LATIN,COMMON,LATIN,COMMON,LATIN,COMMON,LATIN,COMMON,BRAILLE,COMMON,GLAGOLITIC,LATIN,COPTIC,GEORGIAN,TIFINAGH,ETHIOPIC,CYRILLIC,COMMON,HAN,COMMON,HAN,COMMON,HAN,COMMON,HAN,INHERITED,HANGUL,COMMON,HAN,COMMON,HIRAGANA,INHERITED,COMMON,HIRAGANA,COMMON,KATAKANA,COMMON,KATAKANA,BOPOMOFO,HANGUL,COMMON,BOPOMOFO,COMMON,KATAKANA,HANGUL,COMMON,HANGUL,COMMON,KATAKANA,COMMON,KATAKANA,COMMON,HAN,COMMON,HAN,YI,LISU,VAI,CYRILLIC,BAMUM,COMMON,LATIN,COMMON,LATIN,SYLOTI_NAGRI,COMMON,PHAGS_PA,SAURASHTRA,DEVANAGARI,KAYAH_LI,REJANG,HANGUL,JAVANESE,CHAM,MYANMAR,TAI_VIET,MEETEI_MAYEK,ETHIOPIC,MEETEI_MAYEK,HANGUL,UNKNOWN     ,HAN,LATIN,ARMENIAN,HEBREW,ARABIC,COMMON,ARABIC,COMMON,INHERITED,COMMON,INHERITED,COMMON,ARABIC,COMMON,LATIN,COMMON,LATIN,COMMON,KATAKANA,COMMON,KATAKANA,COMMON,HANGUL,COMMON,LINEAR_B,COMMON,GREEK,COMMON,INHERITED,LYCIAN,CARIAN,OLD_ITALIC,GOTHIC,UGARITIC,OLD_PERSIAN,DESERET,SHAVIAN,OSMANYA,CYPRIOT,IMPERIAL_ARAMAIC,PHOENICIAN,LYDIAN,MEROITIC_HIEROGLYPHS,MEROITIC_CURSIVE,KHAROSHTHI,OLD_SOUTH_ARABIAN,AVESTAN,INSCRIPTIONAL_PARTHIAN,INSCRIPTIONAL_PAHLAVI,OLD_TURKIC,ARABIC,BRAHMI,KAITHI,SORA_SOMPENG,CHAKMA,SHARADA,TAKRI,CUNEIFORM,EGYPTIAN_HIEROGLYPHS,BAMUM,MIAO,KATAKANA,HIRAGANA,COMMON,INHERITED,COMMON,INHERITED,COMMON,INHERITED,COMMON,INHERITED,COMMON,GREEK,COMMON,ARABIC,COMMON,HIRAGANA,COMMON,HAN,COMMON,INHERITED,UNKNOWN};private static HashMap<String, Character.UnicodeScript> aliases;static {aliases = new HashMap<>(128);aliases.put("ARAB", ARABIC);aliases.put("ARMI", IMPERIAL_ARAMAIC);aliases.put("ARMN", ARMENIAN);aliases.put("AVST", AVESTAN);aliases.put("BALI", BALINESE);aliases.put("BAMU", BAMUM);aliases.put("BATK", BATAK);aliases.put("BENG", BENGALI);aliases.put("BOPO", BOPOMOFO);aliases.put("BRAI", BRAILLE);aliases.put("BRAH", BRAHMI);aliases.put("BUGI", BUGINESE);aliases.put("BUHD", BUHID);aliases.put("CAKM", CHAKMA);aliases.put("CANS", CANADIAN_ABORIGINAL);aliases.put("CARI", CARIAN);aliases.put("CHAM", CHAM);aliases.put("CHER", CHEROKEE);aliases.put("COPT", COPTIC);aliases.put("CPRT", CYPRIOT);aliases.put("CYRL", CYRILLIC);aliases.put("DEVA", DEVANAGARI);aliases.put("DSRT", DESERET);aliases.put("EGYP", EGYPTIAN_HIEROGLYPHS);aliases.put("ETHI", ETHIOPIC);aliases.put("GEOR", GEORGIAN);aliases.put("GLAG", GLAGOLITIC);aliases.put("GOTH", GOTHIC);aliases.put("GREK", GREEK);aliases.put("GUJR", GUJARATI);aliases.put("GURU", GURMUKHI);aliases.put("HANG", HANGUL);aliases.put("HANI", HAN);aliases.put("HANO", HANUNOO);aliases.put("HEBR", HEBREW);aliases.put("HIRA", HIRAGANA);aliases.put("ITAL", OLD_ITALIC);aliases.put("JAVA", JAVANESE);aliases.put("KALI", KAYAH_LI);aliases.put("KANA", KATAKANA);aliases.put("KHAR", KHAROSHTHI);aliases.put("KHMR", KHMER);aliases.put("KNDA", KANNADA);aliases.put("KTHI", KAITHI);aliases.put("LANA", TAI_THAM);aliases.put("LAOO", LAO);aliases.put("LATN", LATIN);aliases.put("LEPC", LEPCHA);aliases.put("LIMB", LIMBU);aliases.put("LINB", LINEAR_B);aliases.put("LISU", LISU);aliases.put("LYCI", LYCIAN);aliases.put("LYDI", LYDIAN);aliases.put("MAND", MANDAIC);aliases.put("MERC", MEROITIC_CURSIVE);aliases.put("MERO", MEROITIC_HIEROGLYPHS);aliases.put("MLYM", MALAYALAM);aliases.put("MONG", MONGOLIAN);aliases.put("MTEI", MEETEI_MAYEK);aliases.put("MYMR", MYANMAR);aliases.put("NKOO", NKO);aliases.put("OGAM", OGHAM);aliases.put("OLCK", OL_CHIKI);aliases.put("ORKH", OLD_TURKIC);aliases.put("ORYA", ORIYA);aliases.put("OSMA", OSMANYA);aliases.put("PHAG", PHAGS_PA);aliases.put("PLRD", MIAO);aliases.put("PHLI", INSCRIPTIONAL_PAHLAVI);aliases.put("PHNX", PHOENICIAN);aliases.put("PRTI", INSCRIPTIONAL_PARTHIAN);aliases.put("RJNG", REJANG);aliases.put("RUNR", RUNIC);aliases.put("SAMR", SAMARITAN);aliases.put("SARB", OLD_SOUTH_ARABIAN);aliases.put("SAUR", SAURASHTRA);aliases.put("SHAW", SHAVIAN);aliases.put("SHRD", SHARADA);aliases.put("SINH", SINHALA);aliases.put("SORA", SORA_SOMPENG);aliases.put("SUND", SUNDANESE);aliases.put("SYLO", SYLOTI_NAGRI);aliases.put("SYRC", SYRIAC);aliases.put("TAGB", TAGBANWA);aliases.put("TALE", TAI_LE);aliases.put("TAKR", TAKRI);aliases.put("TALU", NEW_TAI_LUE);aliases.put("TAML", TAMIL);aliases.put("TAVT", TAI_VIET);aliases.put("TELU", TELUGU);aliases.put("TFNG", TIFINAGH);aliases.put("TGLG", TAGALOG);aliases.put("THAA", THAANA);aliases.put("THAI", THAI);aliases.put("TIBT", TIBETAN);aliases.put("UGAR", UGARITIC);aliases.put("VAII", VAI);aliases.put("XPEO", OLD_PERSIAN);aliases.put("XSUX", CUNEIFORM);aliases.put("YIII", YI);aliases.put("ZINH", INHERITED);aliases.put("ZYYY", COMMON);aliases.put("ZZZZ", UNKNOWN);}/****/public static UnicodeScript of(int codePoint) {if (!isValidCodePoint(codePoint))throw new IllegalArgumentException();int type = getType(codePoint);if (type == UNASSIGNED)return UNKNOWN;int index = Arrays.binarySearch(scriptStarts, codePoint);if (index < 0)index = -index - 2;return scripts[index];}/****/public static final UnicodeScript forName(String scriptName) {scriptName = scriptName.toUpperCase(Locale.ENGLISH);UnicodeScript sc = aliases.get(scriptName);if (sc != null)return sc;return valueOf(scriptName);}}private final char value;private static final long serialVersionUID = 3786198910865385080L;/*** 有参构造方法*/public Character(char value) {this.value = value;}/*** 静态缓存类*/private static class CharacterCache {private CharacterCache(){}static final Character cache[] = new Character[127 + 1];static {for (int i = 0; i < cache.length; i++)cache[i] = new Character((char)i);}}/*** 返回一个表示指定的char值的 Character实例*/public static Character valueOf(char c) {if (c <= 127) {return CharacterCache.cache[(int)c];}return new Character(c);}/*** 返回此Character对象的char值*/public char charValue() {return value;}/*** 返回这个Character的哈希码*/@Overridepublic int hashCode() {return Character.hashCode(value);}/*** 返回给定char类型的哈希码*/public static int hashCode(char value) {return (int)value;}/*** 将此对象与指定对象进行比较*/public boolean equals(Object obj) {if (obj instanceof Character) {return value == ((Character)obj).charValue();}return false;}/*** char转String*/public String toString() {char buf[] = {value};return String.valueOf(buf);}/*** char转String*/public static String toString(char c) {return String.valueOf(c);}/*** 确定指定的代码点是否有效 Unicode code point value*/public static boolean isValidCodePoint(int codePoint) {int plane = codePoint >>> 16;return plane < ((MAX_CODE_POINT + 1) >>> 16);}/*** 确定指定字符(Unicode代码点)是否在Basic Multilingual Plane (BMP)中*/public static boolean isBmpCodePoint(int codePoint) {return codePoint >>> 16 == 0;}/*** 确定指定字符(Unicode代码点)是否在 supplementary character范围内*/public static boolean isSupplementaryCodePoint(int codePoint) {return codePoint >= MIN_SUPPLEMENTARY_CODE_POINT&& codePoint <  MAX_CODE_POINT + 1;}/*** 确定给定的char值是否为Unicode high-surrogate code unit (引导代理单元)*/public static boolean isHighSurrogate(char ch) {return ch >= MIN_HIGH_SURROGATE && ch < (MAX_HIGH_SURROGATE + 1);}/*** 确定给定的char值是否为Unicode low-surrogate code unit (后置代理单元)*/public static boolean isLowSurrogate(char ch) {return ch >= MIN_LOW_SURROGATE && ch < (MAX_LOW_SURROGATE + 1);}/*** 判断给定的char值是否是Unicode 代理代码单元*/public static boolean isSurrogate(char ch) {return ch >= MIN_SURROGATE && ch < (MAX_SURROGATE + 1);}/*** 判断给定的一对 char值是否有效 Unicode surrogate pair 代理代码单元*/public static boolean isSurrogatePair(char high, char low) {return isHighSurrogate(high) && isLowSurrogate(low);}/*** 确定的数目char表示指定字符(Unicode代码点)需要的值*/public static int charCount(int codePoint) {return codePoint >= MIN_SUPPLEMENTARY_CODE_POINT ? 2 : 1;}/*** 指定的代理对转换为其补充代码点值*/public static int toCodePoint(char high, char low) {return ((high << 10) + low) + (MIN_SUPPLEMENTARY_CODE_POINT- (MIN_HIGH_SURROGATE << 10)- MIN_LOW_SURROGATE);}/*** 返回CharSequence给定索引处的代码点*/public static int codePointAt(CharSequence seq, int index) {char c1 = seq.charAt(index);if (isHighSurrogate(c1) && ++index < seq.length()) {char c2 = seq.charAt(index);if (isLowSurrogate(c2)) {return toCodePoint(c1, c2);}}return c1;}/*** 返回char数组给定索引处的代码点*/public static int codePointAt(char[] a, int index) {return codePointAtImpl(a, index, a.length);}/*** 返回char阵列给定索引处的代码点,只能使用index小于limit阵列元素*/public static int codePointAt(char[] a, int index, int limit) {if (index >= limit || limit < 0 || limit > a.length) {throw new IndexOutOfBoundsException();}return codePointAtImpl(a, index, limit);}static int codePointAtImpl(char[] a, int index, int limit) {char c1 = a[index];if (isHighSurrogate(c1) && ++index < limit) {char c2 = a[index];if (isLowSurrogate(c2)) {return toCodePoint(c1, c2);}}return c1;}/*** 返回 char阵列给定索引之前的代码点*/public static int codePointBefore(CharSequence seq, int index) {char c2 = seq.charAt(--index);if (isLowSurrogate(c2) && index > 0) {char c1 = seq.charAt(--index);if (isHighSurrogate(c1)) {return toCodePoint(c1, c2);}}return c2;}public static int codePointBefore(char[] a, int index) {return codePointBeforeImpl(a, index, 0);}public static int codePointBefore(char[] a, int index, int start) {if (index <= start || start < 0 || start >= a.length) {throw new IndexOutOfBoundsException();}return codePointBeforeImpl(a, index, start);}static int codePointBeforeImpl(char[] a, int index, int start) {char c2 = a[--index];if (isLowSurrogate(c2) && index > start) {char c1 = a[--index];if (isHighSurrogate(c1)) {return toCodePoint(c1, c2);}}return c2;}/*** 返回主导替代*/public static char highSurrogate(int codePoint) {return (char) ((codePoint >>> 10)+ (MIN_HIGH_SURROGATE - (MIN_SUPPLEMENTARY_CODE_POINT >>> 10)));}public static char lowSurrogate(int codePoint) {return (char) ((codePoint & 0x3ff) + MIN_LOW_SURROGATE);}/*** 将指定的字符(Unicode代码点)转换为其UTF-16表示形式*/public static int toChars(int codePoint, char[] dst, int dstIndex) {if (isBmpCodePoint(codePoint)) {dst[dstIndex] = (char) codePoint;return 1;} else if (isValidCodePoint(codePoint)) {toSurrogates(codePoint, dst, dstIndex);return 2;} else {throw new IllegalArgumentException();}}/*** 将指定的字符(Unicode代码点)转换为存储在 char数组中的UTF-16 char形式*/public static char[] toChars(int codePoint) {if (isBmpCodePoint(codePoint)) {return new char[] { (char) codePoint };} else if (isValidCodePoint(codePoint)) {char[] result = new char[2];toSurrogates(codePoint, result, 0);return result;} else {throw new IllegalArgumentException();}}static void toSurrogates(int codePoint, char[] dst, int index) {dst[index+1] = lowSurrogate(codePoint);dst[index] = highSurrogate(codePoint);}/*** 返回指定字符序列的文本范围内的Unicode代码点数*/public static int codePointCount(CharSequence seq, int beginIndex, int endIndex) {int length = seq.length();if (beginIndex < 0 || endIndex > length || beginIndex > endIndex) {throw new IndexOutOfBoundsException();}int n = endIndex - beginIndex;for (int i = beginIndex; i < endIndex; ) {if (isHighSurrogate(seq.charAt(i++)) && i < endIndex &&isLowSurrogate(seq.charAt(i))) {n--;i++;}}return n;}/*** 返回 char数组参数的子阵列中的Unicode代码点数*/public static int codePointCount(char[] a, int offset, int count) {if (count > a.length - offset || offset < 0 || count < 0) {throw new IndexOutOfBoundsException();}return codePointCountImpl(a, offset, count);}static int codePointCountImpl(char[] a, int offset, int count) {int endIndex = offset + count;int n = count;for (int i = offset; i < endIndex; ) {if (isHighSurrogate(a[i++]) && i < endIndex &&isLowSurrogate(a[i])) {n--;i++;}}return n;}/*** 返回给定的char序列中与 index与codePointOffset代码点偏移的索引*/public static int offsetByCodePoints(CharSequence seq, int index,int codePointOffset) {int length = seq.length();if (index < 0 || index > length) {throw new IndexOutOfBoundsException();}int x = index;if (codePointOffset >= 0) {int i;for (i = 0; x < length && i < codePointOffset; i++) {if (isHighSurrogate(seq.charAt(x++)) && x < length &&isLowSurrogate(seq.charAt(x))) {x++;}}if (i < codePointOffset) {throw new IndexOutOfBoundsException();}} else {int i;for (i = codePointOffset; x > 0 && i < 0; i++) {if (isLowSurrogate(seq.charAt(--x)) && x > 0 &&isHighSurrogate(seq.charAt(x-1))) {x--;}}if (i < 0) {throw new IndexOutOfBoundsException();}}return x;}/*** 返回给定的 char子阵列中的索引,该子阵列与 index由 codePointOffset代码点偏移*/public static int offsetByCodePoints(char[] a, int start, int count,int index, int codePointOffset) {if (count > a.length-start || start < 0 || count < 0|| index < start || index > start+count) {throw new IndexOutOfBoundsException();}return offsetByCodePointsImpl(a, start, count, index, codePointOffset);}static int offsetByCodePointsImpl(char[]a, int start, int count,int index, int codePointOffset) {int x = index;if (codePointOffset >= 0) {int limit = start + count;int i;for (i = 0; x < limit && i < codePointOffset; i++) {if (isHighSurrogate(a[x++]) && x < limit &&isLowSurrogate(a[x])) {x++;}}if (i < codePointOffset) {throw new IndexOutOfBoundsException();}} else {int i;for (i = codePointOffset; x > start && i < 0; i++) {if (isLowSurrogate(a[--x]) && x > start &&isHighSurrogate(a[x-1])) {x--;}}if (i < 0) {throw new IndexOutOfBoundsException();}}return x;}/*** 确定指定的字符是否是小写字符*/public static boolean isLowerCase(char ch) {return isLowerCase((int)ch);}/*** 确定指定的字符(Unicode代码点)是否是小写字符*/public static boolean isLowerCase(int codePoint) {return getType(codePoint) == Character.LOWERCASE_LETTER ||CharacterData.of(codePoint).isOtherLowercase(codePoint);}/*** 确定指定的字符是否是大写字符*/public static boolean isUpperCase(char ch) {return isUpperCase((int)ch);}/*** 确定指定的字符(Unicode代码点)是否是大写字符*/public static boolean isUpperCase(int codePoint) {return getType(codePoint) == Character.UPPERCASE_LETTER ||CharacterData.of(codePoint).isOtherUppercase(codePoint);}/*** 确定指定的字符是否是一个titlecase字符*/public static boolean isTitleCase(char ch) {return isTitleCase((int)ch);}/*** 确定指定的字符(Unicode代码点)是否是一个titlecase字符*/public static boolean isTitleCase(int codePoint) {return getType(codePoint) == Character.TITLECASE_LETTER;}/*** 确定指定的字符是否是数字*/public static boolean isDigit(char ch) {return isDigit((int)ch);}/*** 确定指定的字符(Unicode代码点)是否为数字*/public static boolean isDigit(int codePoint) {return getType(codePoint) == Character.DECIMAL_DIGIT_NUMBER;}/*** 确定字符是否以Unicode定义*/public static boolean isDefined(char ch) {return isDefined((int)ch);}/*** 确定Unicode中是否定义了一个字符(Unicode代码点)*/public static boolean isDefined(int codePoint) {return getType(codePoint) != Character.UNASSIGNED;}/*** 确定指定的字符是否是一个字母*/public static boolean isLetter(char ch) {return isLetter((int)ch);}/*** 确定指定的字符(Unicode代码点)是否是一个字母*/public static boolean isLetter(int codePoint) {return ((((1 << Character.UPPERCASE_LETTER) |(1 << Character.LOWERCASE_LETTER) |(1 << Character.TITLECASE_LETTER) |(1 << Character.MODIFIER_LETTER) |(1 << Character.OTHER_LETTER)) >> getType(codePoint)) & 1)!= 0;}/*** 确定指定的字符是字母还是数字*/public static boolean isLetterOrDigit(char ch) {return isLetterOrDigit((int)ch);}/*** 确定指定的字符(Unicode代码点)是字母还是数字*/public static boolean isLetterOrDigit(int codePoint) {return ((((1 << Character.UPPERCASE_LETTER) |(1 << Character.LOWERCASE_LETTER) |(1 << Character.TITLECASE_LETTER) |(1 << Character.MODIFIER_LETTER) |(1 << Character.OTHER_LETTER) |(1 << Character.DECIMAL_DIGIT_NUMBER)) >> getType(codePoint)) & 1)!= 0;}/*** 已弃用* 替换为isJavaIdentifierStart(char)*/@Deprecatedpublic static boolean isJavaLetter(char ch) {return isJavaIdentifierStart(ch);}/*** 已弃用* 由isJavaIdentifierPart(char)替代*/@Deprecatedpublic static boolean isJavaLetterOrDigit(char ch) {return isJavaIdentifierPart(ch);}/*** 确定指定的字符(Unicode代码点)是否是字母表*/public static boolean isAlphabetic(int codePoint) {return (((((1 << Character.UPPERCASE_LETTER) |(1 << Character.LOWERCASE_LETTER) |(1 << Character.TITLECASE_LETTER) |(1 << Character.MODIFIER_LETTER) |(1 << Character.OTHER_LETTER) |(1 << Character.LETTER_NUMBER)) >> getType(codePoint)) & 1) != 0) ||CharacterData.of(codePoint).isOtherAlphabetic(codePoint);}/*** 确定指定字符(Unicode代码点)是否是Unicode标准定义的CJKV(中文,日文,韩文和越南文)表意文字*/public static boolean isIdeographic(int codePoint) {return CharacterData.of(codePoint).isIdeographic(codePoint);}/*** 确定指定字符是否允许作为Java标识符中的第一个字符*/public static boolean isJavaIdentifierStart(char ch) {return isJavaIdentifierStart((int)ch);}/*** 确定字符(Unicode代码点)是否允许作为Java标识符中的第一个字符*/public static boolean isJavaIdentifierStart(int codePoint) {return CharacterData.of(codePoint).isJavaIdentifierStart(codePoint);}/*** 确定指定的字符是否可以是Java标识符的一部分,而不是第一个字符*/public static boolean isJavaIdentifierPart(char ch) {return isJavaIdentifierPart((int)ch);}/*** 确定字符(Unicode代码点)可能是Java标识符的一部分,而不是第一个字符*/public static boolean isJavaIdentifierPart(int codePoint) {return CharacterData.of(codePoint).isJavaIdentifierPart(codePoint);}/*** 确定指定字符是否允许为Unicode标识符中的第一个字符*/public static boolean isUnicodeIdentifierStart(char ch) {return isUnicodeIdentifierStart((int)ch);}/*** 确定Unicode标识符中的第一个字符是否允许指定的字符(Unicode代码点)*/public static boolean isUnicodeIdentifierStart(int codePoint) {return CharacterData.of(codePoint).isUnicodeIdentifierStart(codePoint);}/*** 确定指定的字符是否可以是Unicode标识符的一部分,而不是第一个字符*/public static boolean isUnicodeIdentifierPart(char ch) {return isUnicodeIdentifierPart((int)ch);}/*** 确定指定的字符(Unicode代码点)是否可能是Unicode标识符的一部分,而不是第一个字符*/public static boolean isUnicodeIdentifierPart(int codePoint) {return CharacterData.of(codePoint).isUnicodeIdentifierPart(codePoint);}/*** 确定指定的字符是否应被视为Java标识符或Unicode标识符中的可忽略字符*/public static boolean isIdentifierIgnorable(char ch) {return isIdentifierIgnorable((int)ch);}/*** 确定指定字符(Unicode代码点)是否应被视为Java标识符或Unicode标识符中的可忽略字符*/public static boolean isIdentifierIgnorable(int codePoint) {return CharacterData.of(codePoint).isIdentifierIgnorable(codePoint);}/*** 使用UnicodeData文件中的大小写映射信息将字符参数转换为小写*/public static char toLowerCase(char ch) {return (char)toLowerCase((int)ch);}/*** 使用UnicodeData文件中的大小写映射信息将字符(Unicode代码点)参数转换为小写*/public static int toLowerCase(int codePoint) {return CharacterData.of(codePoint).toLowerCase(codePoint);}/*** 使用UnicodeData文件中的大小写映射信息将字符参数转换为大写*/public static char toUpperCase(char ch) {return (char)toUpperCase((int)ch);}/*** 使用UnicodeData文件中的大小写映射信息将字符(Unicode代码点)参数转换为大写*/public static int toUpperCase(int codePoint) {return CharacterData.of(codePoint).toUpperCase(codePoint);}/*** 使用UnicodeData文件中的案例映射信息将字符参数转换为titlecase*/public static char toTitleCase(char ch) {return (char)toTitleCase((int)ch);}/*** 使用UnicodeData文件中的案例映射信息将字符(Unicode代码点)参数转换为titlecase*/public static int toTitleCase(int codePoint) {return CharacterData.of(codePoint).toTitleCase(codePoint);}/*** 返回指定基数中字符 ch的数值*/public static int digit(char ch, int radix) {return digit((int)ch, radix);}/*** 返回指定基数中指定字符(Unicode代码点)的数值*/public static int digit(int codePoint, int radix) {return CharacterData.of(codePoint).digit(codePoint, radix);}/*** 返回指定的Unicode字符代表的 int值*/public static int getNumericValue(char ch) {return getNumericValue((int)ch);}/*** 返回 int值指定字符(Unicode代码点)表示*/public static int getNumericValue(int codePoint) {return CharacterData.of(codePoint).getNumericValue(codePoint);}/*** 已弃用* 替换为isWhitespace(char)*/@Deprecatedpublic static boolean isSpace(char ch) {return (ch <= 0x0020) &&(((((1L << 0x0009) |(1L << 0x000A) |(1L << 0x000C) |(1L << 0x000D) |(1L << 0x0020)) >> ch) & 1L) != 0);}/*** 确定指定的字符是否是Unicode空格字符*/public static boolean isSpaceChar(char ch) {return isSpaceChar((int)ch);}/*** 确定指定字符(Unicode代码点)是否为Unicode空格字符*/public static boolean isSpaceChar(int codePoint) {return ((((1 << Character.SPACE_SEPARATOR) |(1 << Character.LINE_SEPARATOR) |(1 << Character.PARAGRAPH_SEPARATOR)) >> getType(codePoint)) & 1)!= 0;}/*** 根据Java确定指定的字符是否为空格*/public static boolean isWhitespace(char ch) {return isWhitespace((int)ch);}/*** 根据Java确定指定字符(Unicode代码点)是否为空格*/public static boolean isWhitespace(int codePoint) {return CharacterData.of(codePoint).isWhitespace(codePoint);}/*** 确定指定的字符是否是ISO控制字符*/public static boolean isISOControl(char ch) {return isISOControl((int)ch);}/*** 确定引用的字符(Unicode代码点)是否是ISO控制字符*/public static boolean isISOControl(int codePoint) {return codePoint <= 0x9F &&(codePoint >= 0x7F || (codePoint >>> 5 == 0));}/*** 返回一个值,表示一个字符的一般类别*/public static int getType(char ch) {return getType((int)ch);}/*** 返回一个值,表示一个字符的一般类别*/public static int getType(int codePoint) {return CharacterData.of(codePoint).getType(codePoint);}/*** 确定指定基数中特定数字的字符表示*/public static char forDigit(int digit, int radix) {if ((digit >= radix) || (digit < 0)) {return '\0';}if ((radix < Character.MIN_RADIX) || (radix > Character.MAX_RADIX)) {return '\0';}if (digit < 10) {return (char)('0' + digit);}return (char)('a' - 10 + digit);}/*** 返回给定字符的Unicode方向属性*/public static byte getDirectionality(char ch) {return getDirectionality((int)ch);}/*** 返回给定字符的Unicode方向性属性(Unicode代码点)*/public static byte getDirectionality(int codePoint) {return CharacterData.of(codePoint).getDirectionality(codePoint);}/*** 根据Unicode规范确定字符是否镜像*/public static boolean isMirrored(char ch) {return isMirrored((int)ch);}/*** 确定是否根据Unicode规范镜像指定的字符(Unicode代码点)*/public static boolean isMirrored(int codePoint) {return CharacterData.of(codePoint).isMirrored(codePoint);}/*** 和给定Character比较大小*/public int compareTo(Character anotherCharacter) {return compare(this.value, anotherCharacter.value);}/*** 比较两个char类型*/public static int compare(char x, char y) {return x - y;}static int toUpperCaseEx(int codePoint) {assert isValidCodePoint(codePoint);return CharacterData.of(codePoint).toUpperCaseEx(codePoint);}static char[] toUpperCaseCharArray(int codePoint) {assert isBmpCodePoint(codePoint);return CharacterData.of(codePoint).toUpperCaseCharArray(codePoint);}/*** 位数*/public static final int SIZE = 16;/*** 表示 char值的字节数*/public static final int BYTES = SIZE / Byte.SIZE;/*** 返回通过反转指定的 char值中的字节顺序获得的值*/public static char reverseBytes(char ch) {return (char) (((ch & 0xFF00) >> 8) | (ch << 8));}/*** 返回指定字符的Unicode名称 codePoint ,或者如果代码点是空 unassigned*/public static String getName(int codePoint) {if (!isValidCodePoint(codePoint)) {throw new IllegalArgumentException();}String name = CharacterName.get(codePoint);if (name != null)return name;if (getType(codePoint) == UNASSIGNED)return null;UnicodeBlock block = UnicodeBlock.of(codePoint);if (block != null)return block.toString().replace('_', ' ') + " "+ Integer.toHexString(codePoint).toUpperCase(Locale.ENGLISH);return Integer.toHexString(codePoint).toUpperCase(Locale.ENGLISH);}
}

JDK源码学习与分析之Character相关推荐

  1. JAVA JDK 源码学习

    JAVA JDK 源码学习 ,以1.8为例,按照下面图片顺序依次学习: applet ,awt,beans,io,lang,math,net,nio,rmi,security,sql,text,tim ...

  2. JDK源码学习-基础

    JDK源码学习 目录 基础 1. 安装 1.1 下载JDK 1.2 配置环境变量 1.3 验证 2. 简单的程序 2.1 编写代码 2.2 编译文件 2.3 执行类 3. java基本类型 基础 1. ...

  3. JDK源码学习笔记——Integer

    一.类定义 public final class Integer extends Number implements Comparable<Integer> 二.属性 private fi ...

  4. JDK源码学习笔记——String

    1.学习jdk源码,从以下几个方面入手: 类定义(继承,实现接口等) 全局变量 方法 内部类 2.hashCode private int hash; public int hashCode() {i ...

  5. 非常实用,IDEA 搭建JDK源码学习环境(可修改+断点+笔记)

    点击关注公众号,实用技术文章及时了解 来源:chenxiao.blog.csdn.net/article/details/104369824 在学习JDK源码的时候,自然少不了代码的调试. 阅读与调试 ...

  6. 通过 JDK 源码学习灵活应用设计模式(上)

    如果大家觉得文章有错误内容,欢迎留言或者私信讨论~   在真实的项目开发中,对于设计模式要学会活学活用,切不可死记硬背,生搬硬套设计模式的设计与实现.需要了解到: 设计的过程是先有问题后有方案的    ...

  7. JDK源码学习路线~每天学一点~每天进步一点点

    很多java开发的小伙伴都会阅读jdk源码,然而确不知道应该从哪读起.以下为小编整理的通常所需阅读的源码范围. 标题为包名,后面序号为优先级1-4,优先级递减 1.java.lang 1) Objec ...

  8. JDK源码学习之Arraylist与LinkedList

    ArrayList和LinkedList是我们在开发过程中常用的两种集合类,本文将从底层源码实现对其进行简单介绍. 下图是Java集合类所涉及的类图. 一.ArrayList 从上面的集合类图可以看出 ...

  9. JDK源码学习笔记——Enum枚举使用及原理

    一.为什么使用枚举 什么时候应该使用枚举呢?每当需要一组固定的常量的时候,如一周的天数.一年四季等.或者是在我们编译前就知道其包含的所有值的集合. 利用 public final static 完全可 ...

最新文章

  1. tomcat 和 jdk 版本 对应关系
  2. 什么?注释里面的代码居然能够执行
  3. 计算机的外部设备 硬盘,外部设备采用SMB协议想共享电脑硬盘下的文件
  4. 【代码笔记】Web-CSS-CSS Text(文本)
  5. [linux驱动]proc学习笔记(一)
  6. [论文阅读] Cost-Effective REgion-based Active Learning for Semantic Segmentation
  7. Linux网络——配置网络之iproute家族命令
  8. 阿里P9谈程序员——程序员的青春饭
  9. c语言在线读程序,用C语言编写简单程序.doc
  10. js获取ck_JS获取CkEditor在线编辑的内容
  11. Win7扫雷的H5完整复刻实现(三) / 鼠标左右键同时按下事件与收尾工作的实现
  12. django+layui图片上传(用户头像修改,实时预览)
  13. adb shell dumpsys activity top
  14. win11系统安装vmware虚拟机win10 汇总
  15. 计算机重新启动后打印机脱机,重新启动计算机后打印机脱机怎么办
  16. 关系型数据库设计原则
  17. oracle rac密码,oracle rac如何修改密码,硬盘损坏如何恢复?
  18. 囚犯排队红帽子和蓝帽子问题
  19. 【学习笔记之Linux】工具之gcc/g++
  20. 移动硬盘格式化了的资料找到办法

热门文章

  1. Yeelink物联网平台
  2. 区块链应该到支付领域有哪些好处?
  3. 【mysql体系结构】mysql的配置文件
  4. PS制作麦克风质感图标,UI设计教程
  5. 阿里短信服务 php实例,阿里大鱼发送sms 短信 php demo示例
  6. nextcloud私有云一键搭建脚本
  7. android edittext自动获取焦点,Android取消EditText自动获取默认焦点
  8. 加速扩张中的喜茶、奈雪们,为其它品牌提供了怎样的私域启示
  9. 这里有颗草莓味儿的腾讯翻译君,用AI打破音乐国界
  10. 云米冰箱能控制扫地机器人_真的可以放心了--云米扫地机器人pro入手记