(十)Java 之 Character 类

本文详细介绍了Java中Character类的使用,包括其内置数据类型、装箱拆箱机制、转义序列的处理以及Character类提供的各种方法,如字符值、哈希码计算和大小写转换等。同时列举了Character类的常量和实例应用。

目录

一. 前言

二. 实例讲解

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 类的常用方法:

序号方法描述
实例方法:
1charValue()返回此Character对象的值
2hashCode()返回此Character的哈希码。
3equals()将此对象与指定的对象进行比较。
4compareTo()比较两个Character对象,若这两个对象相等则返回0
5toString()返回字符的字符串形式,字符串的长度仅为1
静态方法:
1charCount()确定char表示指定字符所需的值的数量(Unicode代码点)。
2codePointAt()返回char数组给定索引处的代码点。
3codePointBefore()返回给定char数组索引之前的代码点。
4codePointCount()返回char数组参数的子数组中的Unicode代码点数。
5compare(char x, char y)以char数字方式比较两个值。
6digit(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
7digit(int codePoint, int radix)返回指定基数中指定字符(Unicode代码点)的数值。
8forDigit(int digit, int radix)确定指定计算机进制(radix)中特定数字的字符表示形式。
radix的返回[2,36]
digit的取值范围[0,radix)
如:求在16进制中15使用哪个字符标识,System.out.println(Character.forDigit(15,16))// 结果:f
9getDirectionality()返回给定字符的Unicode方向性属性。
10getName()返回指定字符的Unicode名称,codePoint如果代码点为null,则返回 null unassigned。
11getNumericValue()返回指定的Unicode字符表示的int值。
12getType()返回表示字符常规类别的值。
13hashCode(char value)返回char值的哈希码; 兼容 Character.hashCode()。
14highSurrogate()返回表示UTF-16编码中指定的补充字符(Unicode代码点)的代理对的前导代理( 高代理代码单元)。
15isHighSurrogate()确定给定char值是否为 Unicode高代理代码单元 (也称为前导代理代码单元)。
16isAlphabetic()确定指定的字符(Unicode代码点)是否为字母。
17isBmpCodePoint()确定指定的字符(Unicode代码点)是否在基本多语言平面(BMP)中。
18isDefined()确定是否使用Unicode定义字符。
19isDigit()是否是一个数字字符
20isIdentifierIgnorable()确定指定的字符是否应被视为Java标识符或Unicode标识符中的可忽略字符。
21isIdeographic()确定指定的字符(Unicode代码点)是否是Unicode标准定义的CJKV(中文,日文,韩文和越南文)表意文字。
22isISOControl()确定指定的字符是否为ISO控制字符。
23isJavaIdentifierPart()确定指定的字符是否可能是Java标识符的一部分,而不是第一个字符。
24isJavaIdentifierStart()确定指定的字符是否允许作为Java标识符中的第一个字符。
25isLetter()是否是一个字母
26isLetterOrDigit()确定指定的字符是字母还是数字。
27isLowerCase()是否是小写字母
28isLowSurrogate()确定给定char值是否为Unicode低代理代码单元 (也称为trailing-surrogate代码单元)。
29isMirrored()确定是否根据Unicode规范镜像该字符。
30isSpaceChar()确定指定的字符是否为Unicode空格字符。
31isSupplementaryCodePoint()确定指定的字符(Unicode代码点)是否在补充字符范围内。
32isSurrogatePair()确定指定的char值对是否是有效的Unicode代理项对。
32isSurrogate()确定给定char值是否为Unicode代理项代码单元。
33isTitleCase()确定指定的字符是否是标题字符。
34isUnicodeIdentifierPart()确定指定的字符是否可能是Unicode标识符的一部分,而不是第一个字符。
35isUnicodeIdentifierStart()确定指定的字符是否允许作为Unicode标识符中的第一个字符。
36isUpperCase()是否是大写字母
37isValidCodePoint()确定指定的代码点是否是有效的Unicode代码点值。
38isWhitespace()根据Java确定指定的字符是否为空白。
39lowSurrogate()判断给定char值是Unicode低代理项代码单元(也称为尾部代理项代码单元)。这样的值并不代表字符本身,而是在UTF-16编码的补充的字符表示被使用
40offsetByCodePoints()返回给定子char数组中与代码点给定index的偏移量的索引codePointOffset。
41reverseBytes()返回通过反转指定char值中的字节顺序获得的值。
42toChars()将指定字符(Unicode代码点)转换为存储在char数组中的UTF-16表示形式。
43toCodePoint()将指定的代理项对转换为其补充代码点值。
44toLowerCase()指定字母的小写形式
45toString(char c)返回String表示指定对象的对象char。
46toTitleCase()使用UnicodeData文件中的大小写映射信息将字符参数转换为titlecase。(转化为大小)
47toUpperCase()使用UnicodeData文件中的大小写映射信息将字符参数转换为大写。
48valueOf()返回表示指定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 常用常量:

序号常量说明
1MIN_RADIX返回最小基数
2MAX_RADIX返回最大基数
3MIN_VALUE字符类型最小值
4MAX_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. 键盘录入字符串实现大小写转换。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

流华追梦

你的鼓励将是我创作最大的动力。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值