带你详细了解OpenJDK 11 Character类

举报
阿提说说 发表于 2022/06/17 13:27:35 2022/06/17
【摘要】 带你详细了解OpenJDK 11 Character类

在这里插入图片描述

写在前面:
学生时代就如同一个个的打基础,幼儿园给小学打基础,小学给中学打基础。
学编程也是如此,学好基础,什么框架都不怕。

该类文章主要就是介绍JDK API的描述和用法,可以当手册来查询

java.lang.Character类Api介绍及测试

valueOf

返回表示指定的char值的Character实例。
如果不需要新的Character实例,则通常应优先使用此方法,而不是构造函数Character(char)
因为此方法可能通过缓存频繁请求的值来显着提高空间和时间性能。

Character character = Character.valueOf('A');
Character character1 = 'A';

charValue

返回此对象表示的原始值 char

Character character = Character.valueOf('A');
char a = character.charValue();

hashCode

返回此Character的哈希码; 等于调用charValue()的结果

Character character = Character.valueOf('A');
int hashcode = character.hashCode();
char a = character.charValue();
assert hashcode == a; //true

toString

Unicode 和ASCII相关编码介绍:https://m.php.cn/faq/483053.html
Code Point介绍:http://www.unicode.org/glossary/#code_point

Code Point.
 (1) Any value in the Unicode codespace; that is, the range of integers from 0 to 10FFFF16. (See definition D10 in Section 3.4, Characters and Encoding.)  
 Not all code points are assigned to encoded characters. See code point type.
 (2) A value, or position, for a character, in any coded character set.
/*
返回表示此Character值的String对象。 其结果是长度为1的串,其唯一分量是原始char由该表示值Character对象
 */
Character character = Character.valueOf('A');
System.out.println(character.toString());

/*
返回表示指定的char的String对象。 结果是一个长度为1的字符串,仅由指定的char
 */
System.out.println(Character.toString('A'));

/*
返回表示指定字符(Unicode代码点)的String对象。 结果是一个长度为1或2的字符串,仅由指定的codePoint
 */
int codePoint = (int) '哈';
System.out.println(codePoint); //21704 16进制为54C8,unicode为\u54c8
System.out.println(Character.toString(codePoint)); //哈

isValidCodePoint

确定指定的代码点是否有效
true如果指定的代码点值介于Character.MIN_CODE_POINT(0x000000) 和 Character.MAX_CODE_POINT(0X10FFFF)之间; 否则为false

int codePoint = (int) '哈';
System.out.println(Character.isValidCodePoint(codePoint));

isBmpCodePoint

确定指定字符(Unicode 代码点)是否在基本多文种平面 (BMP)中。这样的代码点可以使用单个char来表示。
参形:
codePoint – 要测试的字符(Unicode 代码点)
返回值:
如果指定的代码点介于MIN_VALUE(\u0000)和MAX_VALUE(\uFFFF)之间,则为true ;否则false 。

int codePoint = (int) '芏';
System.out.println(codePoint);
System.out.println(Character.isBmpCodePoint(codePoint));
System.out.println(Character.isBmpCodePoint(65535));
System.out.println(Character.isBmpCodePoint(65536));

/**
 * 33423
 * true
 * true
 * false
 */

isSupplementaryCodePoint

确定指定的字符(Unicode代码点)是否在 supplementary character(补充代码点)范围内

System.out.println(Character.isSupplementaryCodePoint(65533));
System.out.println(Character.isSupplementaryCodePoint(65536));

/**
 * false
 * true
 */

isHighSurrogate

确定给定的char值是否是Unicode 高代理代码单元 (也称为前导代理代码单元)。
这些值本身并不表示字符,而是用于表示 UTF-16 编码中的补充字符。
参形:
ch - 要测试的char值。
返回值:
true char值介于MIN_HIGH_SURROGATE(\uD800)和MAX_HIGH_SURROGATE(\uDBFF)之间,则为 true;否则false

System.out.println(Character.isHighSurrogate('\uD800')); //true

isLowSurrogate

确定给定的char值是否是Unicode 低代理代码单元 (也称为尾部代理代码单元)。
这些值本身并不表示字符,而是用于表示 UTF-16 编码中的补充字符。
参形:
ch - 要测试的char值。
返回值:
true char值介于MIN_LOW_SURROGATE(\uDC00)和MAX_LOW_SURROGATE(\uDFFF)之间,则为 true;否则false 。

 System.out.println(Character.isLowSurrogate('\uDC00')); //true

isSurrogate

确定给定的char值是否是 Unicode代理代码单元。
这些值本身并不表示字符,而是用于表示 UTF-16 编码中的补充字符。
char 值是代理代码单元当且仅当它是低代理代码单元或高代理代码单元。
参形:
ch - 要测试的char值。
返回值:
true char值介于MIN_SURROGATE(\uD800)和MAX_SURROGATE(\uDFFF)之间,则为 true;否则false 。

System.out.println(Character.isSurrogate('\u1FFF')); //false

isSurrogatePair

确定指定的char值对是否是有效的Unicode 代理对 。
该方法等价于表达式:
isHighSurrogate(high) && isLowSurrogate(low)
参形:
high – 要测试的高代理代码值 low - 要测试的低代理代码值
返回值:
true指定的高和低代理代码值表示有效的代理对,则为 true;否则false 。

System.out.println(Character.isSurrogatePair('\uDBFF', '\uDC00')); //true

charCount

确定表示指定字符(Unicode 代码点)所需的char值的数量。如果指定字符等于或大于 0x10000(Unicode 补充码点 的最小值),则该方法返回 2。否则,该方法返回 1。
此方法不会验证指定字符是否为有效的 Unicode 代码点。如有必要,调用者必须使用isValidCodePoint验证字符值。
参形:
codePoint – 要测试的字符(Unicode 代码点)。
返回值:
2 如果字符是有效的补充字符; 1 否则。

System.out.println(Character.isValidCodePoint('\uDC00'));
 System.out.println(Character.charCount('\uDC00'));
 /**
  * true
  * 1
  */

toCodePoint

将指定的代理对转换为其补充代码点值。此方法不验证指定的代理对。如有必要,调用者必须使用isSurrogatePair对其进行验证。
参形:
high – 高代理代码单元 low - 低代理代码单元
返回值:
由指定代理对组成的补充代码点

System.out.println(Character.toCodePoint('\uDBFF', '\uDC00'));
System.out.println(Character.toString(1113088));
/**
 * 1113088
 * 􏰀
 */

codePointAt

返回CharSequence的给定索引处的代码点。如果CharSequence中给定索引处的char值在高代理范围内,后续索引小于CharSequence的长度,并且后续索引处的char值在低代理范围内,则补充返回与此代理对对应的代码点。否则,返回给定索引处的char值。
参形:
seq – char值序列(Unicode 代码单元) index – 要转换的seq中char值(Unicode 代码单元)的索引
返回值:
给定索引处的 Unicode 代码点
抛出:
NullPointerException – 如果seq为空。
IndexOutOfBoundsException – 如果值index为负数或不小于seq.length() 。

System.out.println(Character.codePointAt("abc", 0));
System.out.println(Character.codePointAt("abc", 2));
//数组 char
System.out.println(Character.codePointAt(new char[]{'a'}, 0));
/**
* 97
* 99
* 97
*/

codePointBefore

/*
返回CharSequence的给定索引之前的代码点。

如果char在值(index - 1)在CharSequence处于低代理项范围, (index - 2)不为负,并且char在值(index - 2)
在CharSequence处于高代理项范围内,则对应于该代理对的增补代码点是回。

否则,返回char值(index - 1) 。
 */
System.out.println(Character.codePointBefore("abc", 1));

/**
 * 返回char数组的给定索引之前的代码点,其他相同
 */
System.out.println(Character.codePointBefore(new char[]{'a', 'b', 'c'}, 1));


/*
返回char数组的给定索引之前的代码点,其中只能使用index大于或等于start数组元素,其他相同
参形:
a - char数组 index – 应返回的代码点之后的索引 start – char数组中第一个数组元素的索引
返回值:
给定索引之前的 Unicode 代码点值
 */
System.out.println(Character.codePointBefore(new char[]{'a', 'b', 'c'}, 2, 0));

highSurrogate

返回以 UTF-16 编码表示指定补充字符(Unicode 代码点)的代理项对 的前导代理项(高代理项代码单元 )。如果指定的字符不是补充字符,则返回未指定的char 。
如果isSupplementaryCodePoint(x)为true ,则isHighSurrogate (highSurrogate(x))和toCodePoint (highSurrogate(x), lowSurrogate (x)) == x也始终为true 。
参形:
codePoint – 补充字符(Unicode 代码点)
返回值:
用于以 UTF-16 编码表示字符的前导代理代码单元

System.out.println(Character.isSupplementaryCodePoint(65536));
System.out.println(Character.highSurrogate(65536));
/**
 * true
 * ?
 * /

lowSurrogate

返回以 UTF-16 编码表示指定补充字符(Unicode 代码点)的代理项对 的尾随代理项(低代理项代码单元 )。如果指定的字符不是补充字符,则返回未指定的char 。
如果isSupplementaryCodePoint(x)为true ,则isLowSurrogate (lowSurrogate(x))和toCodePoint ( highSurrogate (x), lowSurrogate(x)) == x也始终为true 。
参形:
codePoint – 补充字符(Unicode 代码点)
返回值:
用于以 UTF-16 编码表示字符的尾随代理代码单元

System.out.println(Character.isSupplementaryCodePoint(65536));
System.out.println(Character.lowSurrogate(65536));
System.out.println(Character.isLowSurrogate(Character.lowSurrogate(65536)));

toChars

/*
* 将指定字符(Unicode代码点)转换为其UTF-16表示形式。 如果指定的代码点是BMP(基本多语言平面或平面0)值,则相同的值存储在dst[dstIndex] ,并返回1。
* 如果指定的代码点是补充字符,则其代理值存储在dst[dstIndex] (high-surrogate)和dst[dstIndex+1] (low-surrogate)中,并返回2。
*
* 参数
*      codePoint - 要转换的字符(Unicode代码点)。
*      dst - char数组 ,其中 codePoint的UTF-16值被存储。
*      dstIndex - 存储转换值的 dst数组的起始索引。
* 结果
*      如果代码点是BMP代码点,则为1;如果代码点是补充代码点,则为2。
*/
char[] chars = new char[10];
System.out.println(Character.toChars(65536, chars, 0));

/*
将指定字符(Unicode代码点)转换为存储在char数组中的UTF-16表示形式。
如果指定的代码点是BMP(基本多语言平面或平面0)值,则生成的char数组具有与codePoint相同的值。
如果指定的代码点是补充代码点,则生成的char数组具有相应的代理项对。
参数
   codePoint - Unicode代码点
结果
   具有 codePoint的UTF-16表示的 char数组。
*/
System.out.println(Arrays.toString(Character.toChars(65536)));
System.out.println(Arrays.toString(Character.toChars(33423)));

/**
* 2
* [?, ?]
* [芏]
*/

codePointCount

/*
 返回指定char序列的文本范围内的Unicode代码点数。
 文本范围开始在指定的beginIndex ,并延伸到char在索引endIndex - 1。
 因此,文本范围的长度(在chars中)是endIndex-beginIndex。
 **文本范围内的未配对代理计为每个代码点**。
 参数
     seq - 字符序列
     beginIndex - 文本范围的第一个 char的索引。
     endIndex - 文本范围的最后 char之后的索引。
 结果
     指定文本范围内的Unicode代码点数
  */
 System.out.println(Character.codePointCount("abcd", 0, 2));

 /*
 返回char数组参数的子数组中Unicode代码点的数量。
 offset参数是子数组的第一个char的索引,而count参数指定以char为单位的子数组的长度。
 子数组中未配对的替代物每个计为一个代码点。
 参数
     a - char数组
     offset - 给定 char数组中第一个 char的索引
     count - char数组的长度
 结果
     指定子数组中的Unicode代码点数
  */
 System.out.println(Character.codePointCount(new char[]{'a', 'b', 'c'}, 0, 3));

 /**
  * 2
  * 3
  */

offsetByCodePoints

/*
返回给定char序列中的索引,该索引从给定的index偏移codePointOffset代码点。
 index和codePointOffset给出的文本范围内的未配对代理计为每个代码点。
 参数
     seq - 字符序列
     index - 要偏移的索引
     codePointOffset - 代码点中的偏移量
 结果
     char序列中的索引
  */
 System.out.println(Character.offsetByCodePoints("abcd", 0, 1));

 /*
 返回给定的索引char子阵是从给定的偏移index由codePointOffset代码点。
 start和count参数指定char数组的子数组。 由index和codePointOffset给出的文本范围内的未配对代理计为每个代码点。
 参数
     a - char数组
     start - 子阵列的第一个 char的索引
     count - char阵列的长度
     index - 要偏移的索引
     codePointOffset - 代码点中的偏移量
 结果
     数组中的索引
  */
 System.out.println(Character.offsetByCodePoints(new char[]{'a', 'b', 'c', 'd'}, 0, 4, 0, 2));

 /**
  * 1
  * 2
  */

isLowerCase

/*
 * 确定指定的字符是否为小写字符
 */
System.out.println(Character.isLowerCase('A'));

/*
确定指定的字符(Unicode代码点)是否为小写字符。
 */
System.out.println(Character.isLowerCase(97));

/**
 * false
 * true
 */

isUpperCase

确定指定的字符(Unicode代码点)是否为大写字符

isTitleCase?没搞懂

确定指定的字符是否为标题字符。
如果Character.getType(ch)提供的一般类别类型为TITLECASE_LETTER ,则该字符是标题大小写字符。
有些字符看起来像成对的拉丁字母。例如,有一个看起来像“LJ”的大写字母和一个看起来像“lj”的对应小写字母。第三种形式,看起来像“Lj”,是在以首字母大写的小写字母呈现单词时使用的适当形式,如书名。
这些是此方法返回true的一些 Unicode 字符:
LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON
LATIN CAPITAL LETTER L WITH SMALL LETTER J
LATIN CAPITAL LETTER N WITH SMALL LETTER J
LATIN CAPITAL LETTER D WITH SMALL LETTER Z
许多其他 Unicode 字符也是标题大小写。
注意:此方法不能处理增补字符。要支持所有 Unicode 字符,包括补充字符,请使用isTitleCase(int)方法。
参形:
ch - 要测试的字符。
返回值:
true 字符是首字母大写,则为真;否则false 。

System.out.println(Character.getType('L'));
System.out.println(Character.isTitleCase('L'));
/**
 * 1
 * false
 */

isDigit

/*
确定指定的字符是否为数字
 */
System.out.println(Character.isDigit('1'));


/*
 * 确定指定的字符(Unicode代码点)是否为数字
 */
System.out.println(Character.isDigit(97));
/**
 * true
 * false
 */

isDefined

/*
 确定是否为Unicode中定义的字符。
 如果至少满足下列条件之一,则定义字符:
 它在UnicodeData文件中有一个条目。
 它具有UnicodeData文件定义的范围中的值。
  */
 System.out.println(Character.isDefined('a'));

 /*
 确定是否在Unicode中定义了字符(Unicode代码点)
  */
 System.out.println(Character.isDefined(97));

isLetter

/*
确定指定的字符是否为letter

如果字符的一般类别类型(由Character.getType(ch)提供)是以下任何一种字符,则该字符被视为字母:
UPPERCASE_LETTER
LOWERCASE_LETTER
TITLECASE_LETTER
MODIFIER_LETTER
OTHER_LETTER
 */
System.out.println(Character.isLetter('A'));
System.out.println(Character.isLetter('陈'));

/*
确定指定的字符(Unicode代码点)是否为字母
 */
System.out.println(Character.isLetter(97));

isLetterOrDigit

 /*
 确定指定的字符是Letter或者数字
  */
 System.out.println(Character.isLetterOrDigit('A'));
 System.out.println(Character.isLetterOrDigit('1'));
 System.out.println(Character.isLetterOrDigit('?'));
 System.out.println(Character.isLetterOrDigit('陈'));

 /*
 确定指定的字符(Unicode代码点)是字母还是数字
  */
 System.out.println(Character.isLetterOrDigit(97));
 /**
  * true
  * true
  * false
  * true
  * true
  */

isAlphabetic

关于UPPERCASE_LETTER等可见,如下
注释格式为:“Unicode规范中的种类”

    //“Cn”
    public static final byte UNASSIGNED = 0;
    //“Lu”——大写字母
    public static final byte UPPERCASE_LETTER = 1;
    //“Ll”——小写字母
    public static final byte LOWERCASE_LETTER = 2;
    //“Lt”
    public static final byte TITLECASE_LETTER = 3;
    //“Lm”
    public static final byte MODIFIER_LETTER = 4;
    //“Lo”——各种文字,汉字属于此类
    public static final byte OTHER_LETTER = 5;
    //“Mn”——该类字符不会占用一个空格的空间,而是作用在之前或之后的字符上。如删除线、下划线等
    public static final byte NON_SPACING_MARK = 6;
    //“Me”——闭合字符,如' ⃟'、' ⃠'
    public static final byte ENCLOSING_MARK = 7;
    //“Mc”——
    public static final byte COMBINING_SPACING_MARK = 8;
    //“Nd”——数字字符,如阿拉伯数字
    public static final byte DECIMAL_DIGIT_NUMBER = 9;
    //“Nl”——字母数字,如罗马数字
    public static final byte LETTER_NUMBER = 10;
    //“No”——其他的特殊数字,如:'①'、'⑴'、'⒈'、'㈠'
    public static final byte OTHER_NUMBER = 11;
    //“Zs”
    public static final byte SPACE_SEPARATOR = 12;
    //“Zl”
    public static final byte LINE_SEPARATOR = 13;
    //“Zp”
    public static final byte PARAGRAPH_SEPARATOR = 14;
    //“Cc”
    public static final byte CONTROL = 15;
    //“Cf”
    public static final byte FORMAT = 16;
    //“Co”
    public static final byte PRIVATE_USE = 18;
    //“Cs”
    public static final byte SURROGATE = 19;
    //“Pd”——连接符,如'-'
    public static final byte DASH_PUNCTUATION = 20;
    //“Ps”——成对标点符号的开始符号,如'('、'【'、'{'、'《'
    public static final byte START_PUNCTUATION = 21;
    //“Pe”——成对标点符号的结束符号,如')'、'】'、'}'、'》'
    public static final byte END_PUNCTUATION = 22;
    //“Pc”
    public static final byte CONNECTOR_PUNCTUATION = 23;
    //“Po”——其他标点符号,如'!'、'?'、'!'、'?'
    public static final byte OTHER_PUNCTUATION = 24;
    //“Sm”——数学符号,如'+'、'='、'>'
    public static final byte MATH_SYMBOL = 25;
    //“Sc”——货币符号,如'$'、'¥'
    public static final byte CURRENCY_SYMBOL = 26;
    //“Sk”——修饰符,如'^'
    public static final byte MODIFIER_SYMBOL = 27;
    //“So”——其他符号,如'⒜'
    public static final byte OTHER_SYMBOL = 28;
    //“Pi”——引用符号的开始符号,如'“'、'‘'
    public static final byte INITIAL_QUOTE_PUNCTUATION = 29;
    //“Pf”——引用符号的结束符号,如'”'、'’'
    public static final byte FINAL_QUOTE_PUNCTUATION = 30;
/*
确定指定的字符(Unicode代码点)是否为字母。
如果字符的一般类别类型(由getType(codePoint)提供)是以下任何一种,则该字符被视为字母字符:

UPPERCASE_LETTER
LOWERCASE_LETTER
TITLECASE_LETTER
MODIFIER_LETTER
OTHER_LETTER
LETTER_NUMBER
或者它具有由Unicode标准定义的贡献属性Other_Alphabetic。
 */
System.out.println(Character.isAlphabetic(123));
System.out.println(Character.toString(123));//{
System.out.println(Character.isAlphabetic(97));//A
System.out.println(Character.isAlphabetic(21704));//哈,并不是理解的英文字母
/**
 * false
 * {
 * true
 * true
 */

isIdeographic

确定指定的字符(Unicode代码点)是否为Unicode标准定义的CJKV(中文,日文,韩文和越南文)表意文字

System.out.println(Character.isIdeographic('哈'));
System.out.println(Character.isIdeographic('a'));
/**
 * true
 * false
 */

isJavaIdentifierStart

/**
 * 确定指定的字符是否允许作为Java标识符中的第一个字符。
 * 当且仅当满足下列条件之一时,字符才可以作为Java标识符:
 * <p>
 * isLetter(ch)返回true
 * getType(ch)返回LETTER_NUMBER
 * ch是货币符号(例如'$' )
 * ch是连接标点字符(例如'_' )。
 */
@Test
public void isJavaIdentifierStart() {
    System.out.println(Character.isJavaIdentifierStart('?'));
    System.out.println(Character.isJavaIdentifierStart('_'));

    System.out.println(Character.isJavaIdentifierStart(97));

    /**
     * false
     * true
     * true
     */
}

确定指定字符是否可以是 Java 标识符的一部分,而不是第一个字符。
如果满足以下任一条件,则字符可能是 Java 标识符的一部分:
是一个字母
是一个货币符号(例如’$’ )
是一个连接标点符号(例如’_’ )
是一个数字
是一个数字字母(如罗马数字字符)
是一个组合标记
是一个非空格标记
isIdentifierIgnorable为字符返回true
注意:此方法不能处理增补字符。要支持所有 Unicode 字符,包括补充字符,请使用isJavaIdentifierPart(int)方法。
参形:
ch - 要测试的字符。
返回值:
如果字符可能是 Java 标识符的一部分,则为true ;否则false 。

System.out.println(Character.isJavaIdentifierPart('?'));

System.out.println(Character.isJavaIdentifierPart(97));
/**
 * false
 * true
 */

isUnicodeIdentifierStart

确定指定字符是否允许作为 Unicode 标识符中的第一个字符。
当且仅当以下条件之一为真时,字符才可以开始 Unicode 标识符:
isLetter(ch)返回true
getType(ch)返回LETTER_NUMBER 。
注意:此方法不能处理增补字符。要支持所有 Unicode 字符,包括补充字符,请使用isUnicodeIdentifierStart(int)方法。
参形:
ch - 要测试的字符。
返回值:
如果字符可以开始一个 Unicode 标识符,则为true ;否则false

System.out.println(Character.isUnicodeIdentifierStart('哈'));
System.out.println(Character.isUnicodeIdentifierStart('_'));
//代码点
System.out.println(Character.isUnicodeIdentifierStart(97));

/**
* true
* false
* true
*/

isUnicodeIdentifierPart

确定指定的字符是否可能是Unicode标识符的一部分,而不是第一个字符

//支持,字符,和代码点
System.out.println(Character.isUnicodeIdentifierPart('哈'));
System.out.println(Character.isUnicodeIdentifierPart('-'));
System.out.println(Character.isUnicodeIdentifierPart(97));
/**
 * true
 * false
 * true
 */

isIdentifierIgnorable

确定是否应将指定字符视为 Java 标识符或 Unicode 标识符中的可忽略字符。
在 Java 标识符或 Unicode 标识符中可以忽略以下 Unicode 字符:
非空白的 ISO 控制字符
‘\u0000’到’\u0008’
‘\u000E’到’\u001B’
‘\u007F’到’\u009F’
所有具有FORMAT通用类别值的字符
注意:此方法不能处理增补字符。要支持所有 Unicode 字符,包括补充字符,请使用isIdentifierIgnorable(int)方法。
参形:
ch - 要测试的字符。
返回值:
true该字符是一个可忽略的控制字符,它可能是 Java 或 Unicode 标识符的一部分,则为 true;否则false 。

System.out.println(Character.isIdentifierIgnorable('\u0000'));  //true
//也支持代码点

toLowerCase

/*
使用UnicodeData文件中的大小写映射信息将字符参数转换为小写。
请注意,对于某些字符范围, Character.isLowerCase(Character.toLowerCase(ch))并不总是返回true ,特别是那些符号或表意符号。

通常,应使用String.toLowerCase()将字符映射为小写。

String案例映射方法比Character案例映射方法有几个好处。

String案例映射方法可以执行区域设置敏感的映射,上下文相关的映射和1:M字符映射,而Character案例映射方法则不能。

注意:此方法无法处理supplementary characters 。 要支持所有Unicode字符(包括增补字符),请使用toLowerCase(int)方法。

参数
        ch - 要转换的字符。
结果
        字符的小写,如果有的话; 否则,角色本身。
 */
System.out.println(Character.toLowerCase('A'));

System.out.println(Character.isLowerCase(Character.toLowerCase('_')));

//也支持使用代码点

/**
* a
* false
*/

toUpperCase

同理toLowerCase

toTitleCase

/*
使用UnicodeData文件中的大小写映射信息将字符参数转换为标题。 如果一个字符没有明确的标题映射,并且根据UnicodeData本身不是一个标题字符串,那么大写映射将作为等效的标题映射返回。
如果char参数已经是标题char ,则将返回相同的char值。
请注意,对于某些字符范围, Character.isTitleCase(Character.toTitleCase(ch))并不总是返回true 。

注意:此方法无法处理supplementary characters 。 要支持所有Unicode字符(包括增补字符),请使用toTitleCase(int)方法。

参数
    ch - 要转换的字符。
结果
    相当于该字符的标题词,如果有的话; 否则,角色本身。
 */
System.out.println(Character.toTitleCase('a'));
System.out.println(Character.isTitleCase(Character.toTitleCase('a')));

//支持使用代码点

digit

返回指定基数中字符ch的数值。
如果基数不在MIN_RADIX ≤ radix ≤ MAX_RADIX范围内,或者如果ch的值不是指定基数中的有效数字,则返回-1 。如果以下至少一项为真,则字符是有效数字:
isDigit方法对字符为true且字符的 Unicode 十进制数字值(或其单字符分解)小于指定的基数。在这种情况下,返回十进制数字值。
该字符是大写拉丁字母’A’到’Z’之一,其代码小于radix + ‘A’ - 10 。在这种情况下,返回ch - ‘A’ + 10 。
该字符是小写拉丁字母’a’到’z’之一,其代码小于radix + ‘a’ - 10 。在这种情况下,返回ch - ‘a’ + 10 。
该字符是全角大写拉丁字母 A ( ‘\uFF21’ ) 到 Z ( ‘\uFF3A’ ) 之一,其代码小于radix + ‘\uFF21’ - 10 。在这种情况下,返回ch - ‘\uFF21’ + 10 。
该字符是全角小写拉丁字母 a ( ‘\uFF41’ ) 到 z ( ‘\uFF5A’ ) 之一,其代码小于radix + ‘\uFF41’ - 10 。在这种情况下,返回ch - ‘\uFF41’ + 10 。
注意:此方法不能处理增补字符。要支持所有 Unicode 字符,包括补充字符,请使用digit(int, int)方法。
参形:
ch - 要转换的字符。 radix基数。
返回值:
由指定基数中的字符表示的数值。

System.out.println(Character.digit('A', 16)); //10
System.out.println(Character.digit('A', 10)); //-1

//也支持使用代码点

getNumericValue

返回指定 Unicode 字符表示的int值。例如,字符’\u216C’ (罗马数字 50)将返回一个值为 50 的 int。
大写字母 AZ( ‘\u0041’到’\u005A’ )、小写字母( ‘\u0061’到’\u007A’ )和全角变体( ‘\uFF21’到’\uFF3A’和’\uFF41’通过’\uFF5A’ ) 形式具有从 10 到 35 的数值。这与 Unicode 规范无关,Unicode 规范不为这些char值分配数值。
如果字符没有数值,则返回 -1。如果字符具有不能表示为非负整数的数值(例如,小数值),则返回 -2。
注意:此方法不能处理增补字符。要支持所有 Unicode 字符,包括补充字符,请使用getNumericValue(int)方法。
参形:
ch - 要转换的字符。
返回值:
字符的数值,作为非负int值; -2 如果字符具有数值但该值不能表示为非负int值; -1 如果字符没有数值。

System.out.println(Character.getNumericValue('A')); //10
//支持使用代码点

isSpaceChar

确定指定字符是否为 Unicode 空格字符。当且仅当 Unicode 标准将字符指定为空格字符时,该字符才被视为空格字符。如果角色的一般类别类型是以下任何一种,则此方法返回 true:
SPACE_SEPARATOR
LINE_SEPARATOR
PARAGRAPH_SEPARATOR
注意:此方法不能处理增补字符。要支持所有 Unicode 字符,包括补充字符,请使用isSpaceChar(int)方法。
参形:
ch - 要测试的字符。
返回值:
如果字符是空格字符,则为true ;否则false 。

System.out.println(Character.isSpaceChar(' '));
System.out.println(Character.isSpaceChar('\ue00f'));
//支持使用代码点

/**
 * true
 * false
 */

isWhitespace

根据 Java 确定指定字符是否为空格。一个字符是一个 Java 空白字符当且仅当它满足以下条件之一:
它是 Unicode 空格字符( SPACE_SEPARATOR 、 LINE_SEPARATOR或PARAGRAPH_SEPARATOR ),但也不是不间断空格( ‘\u00A0’ 、 ‘\u2007’ 、 ‘\u202F’ )。
它是’\t’ ,U+0009 水平制表。
它是’\n’ ,U+000A LINE FEED。
它是’\u000B’ , U+000B 垂直制表。
它是’\f’ ,U+000C 换页。
它是’\r’ ,U+000D 回车。
它是’\u001C’ , U+001C 文件分隔符。
它是’\u001D’ ,U+001D 组分隔符。
它是’\u001E’ , U+001E 记录分隔符。
它是’\u001F’ , U+001F 单位分隔符。
注意:此方法不能处理增补字符。要支持所有 Unicode 字符,包括补充字符,请使用isWhitespace(int)方法。
参形:
ch - 要测试的字符。
返回值:
如果字符是 Java 空白字符,则为true ;否则false 。

System.out.println(Character.isWhitespace(' '));

isISOControl

确定指定字符是否为 ISO 控制字符。如果字符的代码在’\u0000’到’\u001F’ \u001F’ 范围内或在’\u007F’到’\u009F’范围内,则该字符被视为 ISO 控制字符。
注意:此方法不能处理增补字符。要支持所有 Unicode 字符,包括补充字符,请使用isISOControl(int)方法。
参形:
ch - 要测试的字符。
返回值:
如果字符是 ISO 控制字符,则为true ;否则false 。

System.out.println(Character.isISOControl('\u001F')); //true
//支持使用代码点

getType

返回一个值,指示字符的一般类别。
注意:此方法不能处理增补字符。要支持所有 Unicode 字符,包括补充字符,请使用getType(int)方法。
参形:
ch - 要测试的字符。
返回值:
一个int类型的值,表示字符的一般类别。

System.out.println(Character.getType('a'));
//支持使用代码点

forDigit

/**
     * 确定指定基数中特定数字的字符表示形式。
     * <p>
     * 如果值radix不是有效基数,或者值digit不是指定基数中的有效数字,则返回空字符( '\u0000' )。
     * 该radix参数是有效的,如果它是大于或等于MIN_RADIX且小于或等于MAX_RADIX 。
     * 如果0 <= digit < radix ,则digit参数有效。
     * <p>
     * 如果该数字小于10,则返回'0' + digit 。 否则,返回值'a' + digit - 10 。
     * <p>
     * 参数
     * digit - 要转换为字符的数字。
     * radix - 基数。
     * 结果
     * 指定基数中指定数字的 char表示形式。
     */
    @Test
    public void forDigit() {
        //10进制
        System.out.println(Character.forDigit(1, 10));
        //16进制
        System.out.println(Character.forDigit(11, 16));
        /**
         * 1
         * b
         */
    }

getDirectionality

    /**
     * 返回给定字符的Unicode方向性属性。
     * <p>
     * 字符方向性用于计算文本的视觉排序。 未定义char值的方向性值为DIRECTIONALITY_UNDEFINED 。
     * 注意:此方法无法处理supplementary characters 。
     * 要支持所有Unicode字符(包括增补字符),请使用getDirectionality(int)方法。
     * <p>
     * 参数
     * ch - char ,其请求方向性属性。
     * 结果
     * char值的方向性属性。
     */
    @Test
    public void getDirectionality() {
        System.out.println(Character.getDirectionality('?')); //13
        //支持使用代码点
    }

isMirrored

    /**
     * 确定是否根据Unicode规范镜像该字符。
     * 当以从右到左的文本显示时,镜像字符应使其字形水平镜像。 例如, '\u0028' LEFT PARENTHESIS在语义上被定义为左括号 。
     * 这将显示为从右到左的文本中从左到右但作为“)”的文本中的“(”。
     * 注意:此方法无法处理supplementary characters 。 要支持所有Unicode字符(包括增补字符),请使用isMirrored(int)方法。
     * <p>
     * 参数
     * ch - char ,请求镜像属性
     * 结果
     * true如果char是镜像的,则 false如果 char未镜像或未定义。
     */
    @Test
    public void isMirrored() {
        System.out.println(Character.isMirrored('\u0028'));
        //支持代码点
    }

compareTo

compare

reverseBytes

    /**
     * 返回通过反转指定的 char值中的字节顺序获得的值。
     * 参数
     * ch - 其中 char反转字节顺序。
     * 结果
     * 通过反转(或等效地,交换)指定的 char值中的字节获得的值。
     */
    @Test
    public void reverseBytes() {
        System.out.println(Character.reverseBytes('?')); //㼀
    }

getName

/**
     * 返回指定字符codePoint的Unicode名称,如果代码点为unassigned ,则返回null。
     * 注意:如果未通过UnicodeData文件(由Unicode Consortium维护的Unicode字符数据库的一部分)为指定的字符分配名称,则返回的名称与表达式的结果相同。
     * <p>
     * Character.UnicodeBlock.of(codePoint).toString().replace('_', ' ') + " " + Integer.toHexString(codePoint)
     * .toUpperCase(Locale.ROOT);
     * 参数
     * codePoint - 字符(Unicode代码点)
     * 结果
     * 指定字符的Unicode名称,如果未分配代码点,则返回null。
     */
    @Test
    public void getName() {
        System.out.println(Character.getName(300));
    }

codePointOf

    /**
     * 返回给定Unicode字符名称指定的Unicode字符的代码点值。
     * 注意:如果UnicodeData文件(由Unicode Consortium维护的Unicode字符数据库的一部分)未为字符分配名称,则其名称将定义为表达式的结果
     * <p>
     * Character.UnicodeBlock.of(codePoint).toString().replace('_', ' ') + " " + Integer.toHexString(codePoint)
     * .toUpperCase(Locale.ROOT);
     * name匹配不区分大小写,删除了任何前导和尾随空格字符。
     * <p>
     * 参数
     * name - Unicode字符名称
     * 结果
     * 由其名称指定的字符的代码点值。
     */
    @Test
    public void codePointOf() {
        System.out.println(Character.codePointOf("\u0000"));
    }
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。