[十一]基础数据类型之Character
Character与Unicode
Character 类的方法和数据是通过 UnicodeData 文件中的信息定义的
char 数据类型(和 Character 对象封装的值)基于原始的 Unicode 规范
提供的方法和数据也是基于Unicode规范来的
|
他将字符定义为固定宽度的 16 位实体,也就是只能表示一个代码单元
而Unicode也可能是有两个代码单元组成
也就是一个代码单元可能完整的表示了一个代码点,也可能是一个代码点的一部分
|
除非你真的有必要对UTF-16中的代码单元进行操作,
否则最好不要在程序中使用char类型的原因
原因很简单,一个char并不一定能够代表一个字符,可能只是一半字符
|
常用属性
无符号二进制形式表示 char 值的位数 | public static final int SIZE = 16; |
无符号二进制形式表示 char 值的字节数 | public static final int BYTES = SIZE / Byte.SIZE; |
表示基本类型 char 的 Class 实例 | public static final Class<Character> TYPE = (Class<Character>) Class.getPrimitiveClass("char"); |
常量值是 char 类型的最小值,即 '\u0000' | public static final char MIN_VALUE = '\u0000'; |
常量值是 char 类型的最大值,即 '\uFFFF' | public static final char MAX_VALUE = '\uFFFF' |
Unicode代码点的最小值 | public static final int MIN_CODE_POINT = 0x000000; |
Unicode代码点的最大值 | public static final int MAX_CODE_POINT = 0X10FFFF; |
UTF-16 编码中的 Unicode 高代理项代码单元的最小值 | public static final char MIN_HIGH_SURROGATE = '\uD800'; |
UTF-16 编码中的 Unicode 高代理项代码单元的最大值 | public static final char MAX_HIGH_SURROGATE = '\uDBFF'; |
UTF-16 编码中的 Unicode 低代理项代码单元的最小值 | public static final char MIN_LOW_SURROGATE = '\uDC00' |
UTF-16 编码中的 Unicode 低代理项代码单元的最大值 | 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; |
增补代码点的最小值 也就是除了0号平面的第一个值 |
public static final int MIN_SUPPLEMENTARY_CODE_POINT = 0x010000 |
可用于与字符串相互转换的最大基数 | public static final int MAX_RADIX = 36; |
可用于与字符串相互转换的最小基数 | public static final int MIN_RADIX = 2 |
构造方法
Character(char) |
只有一种形式的构造方法 直接设置value的值 |
常用方法
比较
compare(char, char) |
看起来可能会有人觉得奇怪,怎么还能直接减法? 其实char不就是一个UTF-16的代码单元么,他不就是一个十六进制数么 如下图所示,0x0058 - 0x002B 得到的值的十进制就是45 比较的也就是前后顺序了 |
compareTo(Character) |
实例方法 借助于静态方法 |
valueOf
valueOf系列一直都是将基本类型包装为对象类型,此处也是如此 Character也是有缓存的 |
XXXValue
charValue() |
直接返回基本类型数据 |
toString
equals
hashcode
reverseBytes
getType
toChars
public static int toChars(int codePoint, char[] dst, int dstIndex) |
保存到指定的数组的指定位置 如果0号平面内 dst[dstIndex] 中存储相同的值,并返回 1 如果辅助平面 dst[dstIndex]高代理 dst[dstIndex+1]低代理返回2 |
public static char[] toChars(int codePoint) |
返回一个char数组保存指定代码点 |
codePointCount
offsetByCodePoints
public static int offsetByCodePoints(char[] a,
int start,
int count,
int index,
int codePointOffset)
|
public static int offsetByCodePoints(CharSequence seq,
int index,
int codePointOffset)
|
codePointAt
public static int codePointAt(char[] a, int index)
|
public static int codePointAt(CharSequence seq, int index)
|
public static int codePointAt(char[] a, int index, int limit )
|
codePointBefore
public static int codePointBefore(CharSequence seq,int index)
|
public static int codePointBefore(char[] a, int index)
|
public static int codePointBefore(char[] a, int index, int start )
|
charCount
toLowerCase / toUpperCase /toTitleCase
toLowerCase(char)
toLowerCase(int)
|
toUpperCase(char)
toUpperCase(int)
|
toTitleCase(char)
toTitleCase(int)
|
代码点获取
public static char highSurrogate(int codePoint) |
返回代码点的高代理 如果不是辅助平面的字符,返回未知char |
public static char lowSurrogate(int codePoint) |
返回代码点的低代理 如果不是辅助平面的字符,返回未知char |
代理位信息判断
public static boolean isSurrogate(char ch) | 是否代理部分 |
public static boolean isSurrogatePair(char high, char low) | 是否是代理对 |
public static boolean isHighSurrogate(char ch) | 是否是高代理 |
public static boolean isLowSurrogate(char ch) | 是否是低代理 |
代码点信息的校验
public static boolean isValidCodePoint(int codePoint) |
是否是合法的代码点 确定指定的代码点是否为从 0x0000 到 0x10FFFF 范围之内的有效 Unicode 代码点值 |
public static boolean isBmpCodePoint(int codePoint) | 是否位于0号平面,是的话就可以使用一个char表示了 |
public static boolean isSupplementaryCodePoint(int codePoint) | 是否位于辅助平面 辅助平面必然需要使用两个char |
toCodePoint(char, char)
public static int toCodePoint(char high,char low)
将指定的代理项对转换为其增补代码点值。该方法没有验证指定的代理项对
如有必要,调用者必须使用 isSurrogatePair 验证它
就是高代理 低代理的合并
|
isXXX 系列
小写?
isLowerCase(char)
isLowerCase(int)
|
大写?
isUpperCase(char)
isUpperCase(int)
|
首字母大写?
isTitleCase(char)
isTitleCase(int)
|
数字?
isDigit(char)
isDigit(int)
|
被定义为 Unicode 中的字符?
isDefined(char)
isDefined(int)
|
字母?
isLetter(char)
isLetter(int)
|
字母或数字?
isLetterOrDigit(char)
isLetterOrDigit(int)
|
是否能够作为 Java 标识符中的首字符?
isJavaIdentifierStart(char)
isJavaIdentifierStart(int)
|
是否能够作为 Java 标识符中的首字符以外的字符?
isJavaIdentifierPart(char)
isJavaIdentifierPart(int)
|
是否允许作为 Unicode 标识符中的首字符?
isUnicodeIdentifierStart(char)
isUnicodeIdentifierStart(int)
|
是否允许作为 Unicode 标识符中的首字符以外的字符?
isUnicodeIdentifierPart(char)
isUnicodeIdentifierPart(int)
|
是否是 Java 标识符或 Unicode 标识符中可忽略的一个字符?
isIdentifierIgnorable(char)
isIdentifierIgnorable(int)
|
空白字符?
isSpaceChar(char)
isSpaceChar(int)
|
Java 标准是否为空白字符?
isWhitespace(char)
isWhitespace(int)
|
ISO 控制字符?
isISOControl(char)
isISOControl(int)
|
字母? isAlphabetic(int) |
中日越韩文字? isIdeographic(int) |
依据 Unicode 规范是否对称?
isMirrored(char)
isMirrored(int)
|
UPPERCASE_LETTER LOWERCASE_LETTER TITLECASE_LETTER MODIFIER_LETTER OTHER_LETTER LETTER_NUMBER
|
UPPERCASE_LETTER LOWERCASE_LETTER TITLECASE_LETTER MODIFIER_LETTER OTHER_LETTER
|
返回使用指定基数的 字符 ch/Unicode 代码点 的数值 |
public static int digit(char ch, int radix)
public static int digit(int codePoint, int radix)
|
确定使用指定基数的特定数字的字符表示形式 | public static char forDigit(int digit, int radix) |
返回给定字符的 Unicode 方向属性 |
public static byte getDirectionality(char ch)
public static byte getDirectionality(int codePoint)
|
返回指定的 Unicode 字符/Unicode 代码点 表示的int值 |
public static int getNumericValue(char ch)
public static int getNumericValue(int codePoint)
|
返回指定字符codePoint的Unicode名称,如果代码点未被分配,则返回null | public static String getName(int codePoint) |
总结
[十一]基础数据类型之Character相关推荐
- Java 基础数据类型
Java 提供的基础数据类型(也称内置数据类型)包含:整数类型.浮点类型.字符类型.布尔类型. 整数类型 整数类型变量用来表示整数的数据类型.整数类型又分为字节型(byte).短整型(short).整 ...
- 第 1-2 课:你不知道的基础数据类型和包装类 + 面试题
基本数据类型 Java 基础数据按类型可以分为四大类:布尔型.整数型.浮点型.字符型,这四大类包含 8 种基础数据类型. 布尔型:boolean 整数型:byte.short.int.long 浮点型 ...
- python容量变化类型有哪些_python基础数据类型补充以及编码的进阶
一. 基础数据类型补充内容 1.1 字符串 字符串咱们之前已经讲了一些非常重要的方法,剩下还有一些方法虽然不是那么重要,但是也算是比较常用,在此给大家在补充一些,需要大家尽量记住. #captaliz ...
- java基础数据类型包装类
基础数据类型包装类 当一个程序要求交互式输入一个int类型的年龄时,从文本框中输入的结果肯定是String类型的.要在程序中进行相关操作,它必须先转换为int类型.因此可以使用数据类型的转换或强制转换 ...
- 袁老师Py西游攻关之基础数据类型
Py西游攻关之基础数据类型 数据类型 计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值.但是,计算机能处理的远不止数值,还可以处理文本.图形.音频.视频.网页等各种各 ...
- 初识mysql数据字段属性_MySQL数据库~~~~初识、基础数据类型
一 数据库初识 1.1 什么是数据库 数据库(DataBase,简称DB),简而言之可视为电子化的文件柜----存储电子文件的处所,用户可以对文件中的数据运行新增,截取,更新,删除等操作. 所谓数据库 ...
- 基础数据类型之集合和深浅copy,还有一些数据类型补充
集合 集合是无序的,不重复的数据集合,它里面的元素是可哈希的(不可变类型),但是集合本身是不可哈希(所以集合做不了字典的键)的.以下是集合最重要的两点: 去重,把一个列表变成集合,就自动去重了. 关系 ...
- Python 基础三:基础数据类型和字符串的常用函数操作
基础数据类型 数字int 数字主要用于计算,有加减乘除等操作,下面介绍一种使用方法 #bit_length(),将十进制数转换成二进制数的二进制数位数 v = 9 data = v.bit_lengt ...
- js基础--数据类型检测的相关知识
欢迎访问我的个人博客:www.xiaolongwu.cn 前言 最近工作有点忙,好几天都没更新技术博客了. 周末起床打开有道云笔记,发现自己的博客todolist里躺了一堆只有名字的文件. 话不多说, ...
最新文章
- MindSpore技术理解(上)
- android socket_盘点Android常用Hook技术
- PostgreSQL在何处处理 sql查询之六十六
- java里 currenttime_java 获取当前时间LocalDateTime currentTimeMillis java.util.Date
- 纯CSS3画出小黄人并实现动画效果
- sql两个数字之差取最接近的_从零学DAX/Sql/Python030203SQL数据分类汇总续篇
- Node.js + Express + handlebars搭建个人网站(1)
- 一个实际的例子学习 SAP BTP Java 应用的 @Before 注解使用方式
- oracle中execute函数,oracle Execute Immediate(sql语句)
- Spring-jdbc:JdbcTemplate使用简介
- Sublime Text 3 快捷键总结(详细版本)
- 辽源a货翡翠,张掖a货翡翠
- 关于决策树,你一定要知道的知识点!
- word分页保存_搞定office丨Word快捷技巧第3弹!
- [BZOJ5286][HNOI2018]转盘(线段树)
- 有人把李白杜甫一生的旅行足迹做了地图,发现了大事!
- 免费建立一个自己的网站
- BUAA_4:Kevin·Feng的正确@姿势
- 201871010132——张潇潇《面向对象程序设计JAVA》第二周学习总结
- Google SEO 搜索中心