目录
一. 前言
二. 实例讲解
2.1. 内置数据类型(char)
2.2. 装箱/拆箱
2.3. 转义序列
2.4. Character 方法
2.5. Character 常量
三. 课后习题
一. 前言
Character 类用于对单个字符进行操作,Character 类在对象中包装一个基本类型 char 的值,在实际开发中,我们经常会遇到需要使用对象,而不是内置数据类型的情况,为了解决这个问题,Java 语言为内置数据类型 char 提供了包装类 Character 类,Character 类的对象包含类型为 char的单个字段,这样的话就能够将基本数据类型当对象来处理。
二. 实例讲解
2.1. 内置数据类型(char)
char ch = 'a';// Unicode for uppercase Greek omega character
char uniChar = '\u039A'; // 字符数组
char[] charArray = { 'a', 'b', 'c', 'd', 'e' };
使用字符时,我们通常使用的是内置数据类型 char。然而,在实际开发过程中,我们经常会遇到需要使用对象,而不是内置数据类型的情况。为了解决这个问题,Java 语言为内置数据类型 char 提供了包装类 Character 类。
Character 类的用法:Character 类提供了一系列方法来操纵字符,你可以使用 Character 的构造方法创建一个 Character 类对象,例如:
Character ch = new Character('a');
2.2. 装箱/拆箱
在某些情况下,Java 编译器会自动创建一个 Character 对象。
例如,将一个 char 类型的参数传递给需要一个 Character 类型参数时,那么编译器会自动地将 char 类型参数转换为 Character 对象。 这种特征称为装箱,反过来称为拆箱。
示例如下:
// Here following primitive char 'a'
// is boxed into the Character object ch
Character ch = 'a';// Here primitive 'x' is boxed for method test,
// return is unboxed to char 'c'
char c = test('x');
2.3. 转义序列
前面有反斜杠(\)的字符代表转义字符,它对编译器来说是有特殊含义的。
下面列表展示了 Java 的转义序列:
转义序列 | 描述 |
---|---|
\t | 在文中该处插入一个tab键 |
\b | 在文中该处插入一个后退键 |
\n | 在文中该处换行 |
\r | 在文中该处插入回车 |
\f | 在文中该处插入换页符 |
\' | 在文中该处插入单引号 |
\" | 在文中该处插入双引号 |
\\ | 在文中该处插入反斜杠 |
当打印语句遇到一个转义序列时,编译器可以正确地对其进行解释。示例如下:
public class Test {public static void main(String[] args) {System.out.println("She said \"Hello!\" to me.");}
}
以上实例编译运行结果如下:
She said "Hello!" to me.
2.4. Character 方法
下面是 Character 类的常用方法:
序号 | 方法 | 描述 |
---|---|---|
实例方法: | ||
1 | charValue() | 返回此Character对象的值 |
2 | hashCode() | 返回此Character的哈希码。 |
3 | equals() | 将此对象与指定的对象进行比较。 |
4 | compareTo() | 比较两个Character对象,若这两个对象相等则返回0 |
5 | toString() | 返回字符的字符串形式,字符串的长度仅为1 |
静态方法: | ||
1 | charCount() | 确定char表示指定字符所需的值的数量(Unicode代码点)。 |
2 | codePointAt() | 返回char数组给定索引处的代码点。 |
3 | codePointBefore() | 返回给定char数组索引之前的代码点。 |
4 | codePointCount() | 返回char数组参数的子数组中的Unicode代码点数。 |
5 | compare(char x, char y) | 以char数字方式比较两个值。 |
6 | digit(char ch, int radix) | 返回ch指定基数中字符的数值。 radix的取值范围[2,36] 如果ch是“大写”的A到Z之间,则返回(ch - 'A' + 10)的值;如果是“小写”a到z之间,返回(ch - 'a' + 10)的值 如:求16进制中F代表的是多少,System.out.println(Character.digit('F',16));// 结果:15 |
7 | digit(int codePoint, int radix) | 返回指定基数中指定字符(Unicode代码点)的数值。 |
8 | forDigit(int digit, int radix) | 确定指定计算机进制(radix)中特定数字的字符表示形式。 radix的返回[2,36] digit的取值范围[0,radix) 如:求在16进制中15使用哪个字符标识,System.out.println(Character.forDigit(15,16))// 结果:f |
9 | getDirectionality() | 返回给定字符的Unicode方向性属性。 |
10 | getName() | 返回指定字符的Unicode名称,codePoint如果代码点为null,则返回 null unassigned。 |
11 | getNumericValue() | 返回指定的Unicode字符表示的int值。 |
12 | getType() | 返回表示字符常规类别的值。 |
13 | hashCode(char value) | 返回char值的哈希码; 兼容 Character.hashCode()。 |
14 | highSurrogate() | 返回表示UTF-16编码中指定的补充字符(Unicode代码点)的代理对的前导代理( 高代理代码单元)。 |
15 | isHighSurrogate() | 确定给定char值是否为 Unicode高代理代码单元 (也称为前导代理代码单元)。 |
16 | isAlphabetic() | 确定指定的字符(Unicode代码点)是否为字母。 |
17 | isBmpCodePoint() | 确定指定的字符(Unicode代码点)是否在基本多语言平面(BMP)中。 |
18 | isDefined() | 确定是否使用Unicode定义字符。 |
19 | isDigit() | 是否是一个数字字符 |
20 | isIdentifierIgnorable() | 确定指定的字符是否应被视为Java标识符或Unicode标识符中的可忽略字符。 |
21 | isIdeographic() | 确定指定的字符(Unicode代码点)是否是Unicode标准定义的CJKV(中文,日文,韩文和越南文)表意文字。 |
22 | isISOControl() | 确定指定的字符是否为ISO控制字符。 |
23 | isJavaIdentifierPart() | 确定指定的字符是否可能是Java标识符的一部分,而不是第一个字符。 |
24 | isJavaIdentifierStart() | 确定指定的字符是否允许作为Java标识符中的第一个字符。 |
25 | isLetter() | 是否是一个字母 |
26 | isLetterOrDigit() | 确定指定的字符是字母还是数字。 |
27 | isLowerCase() | 是否是小写字母 |
28 | isLowSurrogate() | 确定给定char值是否为Unicode低代理代码单元 (也称为trailing-surrogate代码单元)。 |
29 | isMirrored() | 确定是否根据Unicode规范镜像该字符。 |
30 | isSpaceChar() | 确定指定的字符是否为Unicode空格字符。 |
31 | isSupplementaryCodePoint() | 确定指定的字符(Unicode代码点)是否在补充字符范围内。 |
32 | isSurrogatePair() | 确定指定的char值对是否是有效的Unicode代理项对。 |
32 | isSurrogate() | 确定给定char值是否为Unicode代理项代码单元。 |
33 | isTitleCase() | 确定指定的字符是否是标题字符。 |
34 | isUnicodeIdentifierPart() | 确定指定的字符是否可能是Unicode标识符的一部分,而不是第一个字符。 |
35 | isUnicodeIdentifierStart() | 确定指定的字符是否允许作为Unicode标识符中的第一个字符。 |
36 | isUpperCase() | 是否是大写字母 |
37 | isValidCodePoint() | 确定指定的代码点是否是有效的Unicode代码点值。 |
38 | isWhitespace() | 根据Java确定指定的字符是否为空白。 |
39 | lowSurrogate() | 判断给定char值是Unicode低代理项代码单元(也称为尾部代理项代码单元)。这样的值并不代表字符本身,而是在UTF-16编码的补充的字符表示被使用 |
40 | offsetByCodePoints() | 返回给定子char数组中与代码点给定index的偏移量的索引codePointOffset。 |
41 | reverseBytes() | 返回通过反转指定char值中的字节顺序获得的值。 |
42 | toChars() | 将指定字符(Unicode代码点)转换为存储在char数组中的UTF-16表示形式。 |
43 | toCodePoint() | 将指定的代理项对转换为其补充代码点值。 |
44 | toLowerCase() | 指定字母的小写形式 |
45 | toString(char c) | 返回String表示指定对象的对象char。 |
46 | toTitleCase() | 使用UnicodeData文件中的大小写映射信息将字符参数转换为titlecase。(转化为大小) |
47 | toUpperCase() | 使用UnicodeData文件中的大小写映射信息将字符参数转换为大写。 |
48 | valueOf() | 返回表示指定char值的Character实例 。 |
实例:
public class Java {public static void main(String[] args) {Character ch = new Character('X');System.out.println(Character.isUpperCase(ch));// Character.isUpperCase(ch) 用于判断括号里的字母是否为大写System.out.println(Character.isLowerCase(ch));// Character.isLowerCase(ch) 用于判断括号里的字母是否为小写System.out.println(Character.isDigit(ch));// Character.isDigit(ch) 用于判断括号里的内容是否为数字}
}
运行结果:
true
false
false
2.5. Character 常量
下表是 Character 常用常量:
序号 | 常量 | 说明 |
---|---|---|
1 | MIN_RADIX | 返回最小基数 |
2 | MAX_RADIX | 返回最大基数 |
3 | MIN_VALUE | 字符类型最小值 |
4 | MAX_VALUE | 字符类型最大值 |
char a = Character.MAX_VALUE;
char b = Character.MIN_VALUE;
int c = Character.MAX_RADIX;
int d = Character.MIN_RADIX;
System.out.println(d);
System.out.println(c);
System.out.println(b);
System.out.println(a);// 运行结果:
2
36?
三. 课后习题
1. 键盘录入一个字符串数据:包含大写字母字符、数字字符、小写字母字符(不考虑其他字符)。
2. 统计大写字母字符、小写字母字符、数字字符的个数(不考虑其他字符)。
3. 键盘录入字符串实现大小写转换。