目录
简介
Character 类用于对单个字符进行操作。
Character 类在对象中包装一个基本类型 char 的值
注释里详细地讲了java中char,代码点,代码单元的关系
16 位unicode编码的所有 65,536 个字符并不能完全表示全世界所有正在使用或曾经使用的字符。于是,Unicode 标准已扩展到包含多达 1,112,064 个字符。那些超出原来的16 位限制的字符被称作增补字符。Java的char类型是固定16bits的。代码点在U+0000 — U+FFFF之内到是可以用一个char完整的表示出一个字符。但代码点在U+FFFF之外的,一个char无论如何无法表示一个完整字符。这样用char类型来获取字符串中的那些代码点在U+FFFF之外的字符就会出现问题。
增补字符是代码点在 U+10000 至 U+10FFFF 范围之间的字符,也就是那些使用原始的 Unicode 的 16 位设计无法表示的字符。从 U+0000 至 U+FFFF 之间的字符集有时候被称为基本多语言面 (BMP UBasic Multilingual Plane )。因此,每一个 Unicode 字符要么属于 BMP,要么属于增补字符。
/**
* <p>Charactre类包装了原始类型char的值到一个对象。
* 一个Character类的对象包含了一个单独的字段,类型为char。
*
* <p>此外,这个类提供了几个方法,包括确定一个字符的种类(小写字符,数字,等等),
* 将字符从大写转换为小写,反之亦然。
*
* <p>字符信息基于版本6.2.0的Unicode标准
*
* <p>Character类的方法和数据由Unicode协会维护的Unicode字符数据库
* 的一部分UnicodeData文件的信息定义。
* 这个文件为每个定义的Unicode编码点或者字符范围,指定包括名字和通用类别的属性。
*
* <p>这个文件及其描述能从Unicode协会获得:http://www.unicode.org
*
* <p>char数据类型(Character对象封装的值)是基于原始Unicode规范,
* 它定义字符是固定长度的16bit的实体。
* Unicode标准后来出现了变化,允许出现超过16位的字符。
* 合法的代码点的范围是在U+0000到U+10FFFF,成为Unicode标量值。(请参考Unicode标准中U+n符号的定义。)
*
* <p>从U+0000 到 U+FFFF的字符集有时被成为基本多语言平面(BMP)。
* 代码点大于U+FFFF的字符成为补充字符。
* java平台在String和StringBuffer类中的char数组中使用UTF-16表示。
* 在这个表示中,补充字符以2个char值表示。
* 第一个来于高代理范围(\uD800-\uDBFF),第二个来自低代理范围(\uDC00-\uDFFF)。
*
* <p>一个char值,因此,代表了BMP的代码点,包括代理代码点或者UTF-16编码的代码单元。
* 一个int值(32位)代表了所有的Unicode代码点,包括补充代码点。
* int的低位的21bit被用来代表Unicode代码点,高位的11bit一定是0.
* 除非另外指定,补充字符和代理值的行为如下:
*
* <p>自我理解:可以这样认为,一个int32位,一个char16位,一个代码单元16位,一个代码点16位或32位。
* 一个char对应一个代码单元,一个char对应16位的代码点和32位代码点的代理代码点(16位的)。
* 而一个int,无论如何,都能代表一个代码点。
* 有些字符需要两个char表示,一个char可能仅仅是某个字符的一半。
*
* <ul>
* <li>仅仅接受一个char值的方法不能接受代理字符。
* 它们视代理字符的char值作为未定义的字符。
* 例如{@code Character.isLetter('\u005CuD840')} 返回false。
* 即使这个特定的值后面跟着任何低代理的值都能作为一个字符。
*
*
* <li>接受一个int值的方法支持左右Unicode字符,包括补充字符。
* 例如,{@code Character.isLetter(0x2F81A)}返回true,
* 因为这个代码点的值对应一个字符。
* </ul>
*
* <p>在Java SE API的文档内,Unicode代码点用于值对应在U+0000 到 U+10FFFF 的字符(最大的超过16bit)。
* Unicode代码单元用于UTF-16编码的16bit的char值。
* 更多的Unicode的问题可以看,http://www.unicode.org/glossary/
*
* @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>
属性
进制相关-radix
/**
* 转换成字符串和从字符串转换的可行的最小的radix。
* 这个字段的常量值是最小的radix转换方法的radix参数,如digit方法,forDigit方法,Integer的toString方法。
*
*
* @see Character#digit(char, int)
* @see Character#forDigit(int, int)
* @see Integer#toString(int, int)
* @see Integer#valueOf(String)
*/
public static final int MIN_RADIX = 2;
/**
* 转换成字符串和从字符串转换的可行的最大的radix。
* 这个字段的常量值是最大的radix转换方法的radix参数,如digit方法,forDigit方法,Integer的toString方法。
*
* @see Character#digit(char, int)
* @see Character#forDigit(int, int)
* @see Integer#toString(int, int)
* @see Integer#valueOf(String)
*/
public static final int MAX_RADIX = 36;