Java 中的Character 类(方法)

目录

静态方法

字符判断

[1.boolean isDigit(char ch)](#1.boolean isDigit(char ch))

[2.boolean isLetter(char ch)](#2.boolean isLetter(char ch))

[3.boolean isLetterOrDigit(char ch)](#3.boolean isLetterOrDigit(char ch))

[4.boolean isLowerCase(char ch)](#4.boolean isLowerCase(char ch))

[5.boolean isUpperCase(char ch)](#5.boolean isUpperCase(char ch))

[6.boolean isWhitespace(char ch)](#6.boolean isWhitespace(char ch))

[7.boolean isISOControl(char ch)](#7.boolean isISOControl(char ch))

[8.boolean isMirrored(char ch)](#8.boolean isMirrored(char ch))

字符转换

[1.char toLowerCase(char ch)](#1.char toLowerCase(char ch))

[2.char toUpperCase(char ch)](#2.char toUpperCase(char ch))

[3.char toTitleCase(char ch)](#3.char toTitleCase(char ch))

数字字符处理

[1.int digit(char ch, int radix)](#1.int digit(char ch, int radix))

[2.char forDigit(int digit, int radix)](#2.char forDigit(int digit, int radix))

[Unicode 字符处理](#Unicode 字符处理)

[1.int getType(char ch)](#1.int getType(char ch))

[2.char toChars(int codePoint, char[] dst, int offset)](#2.char toChars(int codePoint, char[] dst, int offset))

[3.int toCodePoint(char high, char low)](#3.int toCodePoint(char high, char low))

[4.int codePointAt(CharSequence seq, int index)](#4.int codePointAt(CharSequence seq, int index))

[5.int codePointBefore(CharSequence seq, int index)](#5.int codePointBefore(CharSequence seq, int index))

[6.int codePointCount(CharSequence seq, int beginIndex, int endIndex)](#6.int codePointCount(CharSequence seq, int beginIndex, int endIndex))

字符类信息

[1.boolean isIdentifierIgnorable(char ch)](#1.boolean isIdentifierIgnorable(char ch))

[2.boolean isJavaIdentifierStart(char ch)](#2.boolean isJavaIdentifierStart(char ch))

[3.boolean isJavaIdentifierPart(char ch)](#3.boolean isJavaIdentifierPart(char ch))

[4.boolean isUnicodeIdentifierStart(char ch)](#4.boolean isUnicodeIdentifierStart(char ch))

[5.boolean isUnicodeIdentifierPart(char ch)](#5.boolean isUnicodeIdentifierPart(char ch))

字符属性

[1.boolean isDefined(char ch)](#1.boolean isDefined(char ch))


在 Java 中,Character 类是一个包装类,用于将基本数据类型 char 转换为一个对象。Character 类提供了许多静态方法来处理字符。以下是基于 JDK 21 的 Character 类中所有不同名字的方法及其示例:

静态方法

字符判断

1.boolean isDigit(char ch)

---判断指定字符 是否是数字字符。

java 复制代码
  System.out.println(Character.isDigit('5')); // 输出: true

  System.out.println(Character.isDigit('A')); // 输出: false

2.boolean isLetter(char ch)

---判断指定字符 是否是字母

java 复制代码
  System.out.println(Character.isLetter('A')); // 输出: true

  System.out.println(Character.isLetter('5')); // 输出: false

3.boolean isLetterOrDigit(char ch)

---判断指定字符 是否是字母或数字。( Character.isLetterOrDigit('a') )

java 复制代码
  System.out.println(Character.isLetterOrDigit('A')); // 输出: true

  System.out.println(Character.isLetterOrDigit('_')); // 输出: false

4.boolean isLowerCase(char ch)

判断指定字符 是否是小写字母。( Character.isLowerCase('a') )

java 复制代码
  System.out.println(Character.isLowerCase('a')); // 输出: true

  System.out.println(Character.isLowerCase('A')); // 输出: false

5.boolean isUpperCase(char ch)

判断指定字符 是否是大写字母。( Character.isUpperCase('A') )

java 复制代码
  System.out.println(Character.isUpperCase('A')); // 输出: true

  System.out.println(Character.isUpperCase('a')); // 输出: false

6.boolean isWhitespace(char ch)

判断指定字符 是否是空白字符。( Character.isWhitespace(' ') )

java 复制代码
  System.out.println(Character.isWhitespace(' ')); // 输出: true

  System.out.println(Character.isWhitespace('A')); // 输出: false

7.boolean isISOControl(char ch)

判断指定字符 是否是 ISO 控制字符
一、方法功能
这个方法用于判断给定的字符ch是否为 ISO 控制字符。ISO 控制字符是指在国际标准化组织(ISO)定义的字符集中,那些用于控制通信和数据处理设备操作的字符。这些字符通常不可打印,用于控制文本的格式、设备的操作或进行特殊的通信协议处理。
二、判断依据

  1. ISO 控制字符的范围通常是 ASCII 值在 0 到 31 之间的字符,以及字符 127(DEL)。
  2. 如果传入的字符ch的 ASCII 值在这个范围内,那么该方法将返回true,表示这个字符是 ISO 控制字符;否则,返回false

三、使用场景

  1. 文本处理:在处理文本数据时,可能需要排除或特殊处理 ISO 控制字符。例如,在文本编辑器中,可以选择不显示或特殊处理这些不可打印的控制字符。
  2. 数据通信:在进行数据通信时,需要确保数据中不包含特定的 ISO 控制字符,以保证通信的准确性和稳定性。
  3. 编程语言中的字符串处理:在编程语言中,处理字符串时可能需要判断字符是否为 ISO 控制字符,以便进行相应的处理。
java 复制代码
  System.out.println(Character.isISOControl('\u0000')); // 输出: true

  System.out.println(Character.isISOControl('A')); // 输出: false

8.boolean isMirrored(char ch)

判断指定字符 是否是镜像字符
一、方法功能
这个方法用于判断给定的字符ch是否为镜像字符。镜像字符是指在某些特定的字符集中,存在成对出现且互为镜像的字符。例如,一些字符在水平或垂直方向上可以找到与其对称的对应字符。
二、判断方式
该方法会根据特定的字符映射规则或算法来判断传入的字符是否有对应的镜像字符。如果存在对应的镜像字符,则返回true;否则,返回false
三、使用场景

  1. 文本处理和排版:在一些特殊的文本排版需求中,可能需要识别和处理镜像字符。例如,在设计艺术字、特殊符号的排版或某些创意文本展示中,可能会用到镜像字符的特性。
  2. 字符图形处理:在图形处理软件或涉及字符图形的应用中,判断字符是否为镜像字符可以帮助实现特定的图形效果或对称设计。
  3. 多语言处理:在处理一些包含特殊字符的语言时,可能会遇到镜像字符的情况。了解字符的镜像特性有助于正确地处理和显示这些语言的文本。
java 复制代码
  System.out.println(Character.isMirrored('\u2201')); // 输出: true

  System.out.println(Character.isMirrored('A')); // 输出: false

字符转换

1.char toLowerCase(char ch)

指定字符 转换为小写字符。( Character.toLowerCase('∁') )

java 复制代码
  System.out.println(Character.toLowerCase('A')); // 输出: a

  System.out.println(Character.toLowerCase('a')); // 输出: a

2.char toUpperCase(char ch)

指定字符 转换为大写字符。( Character.toUpperCase('a') )

java 复制代码
  System.out.println(Character.toUpperCase('a')); // 输出: A

  System.out.println(Character.toUpperCase('A')); // 输出: A

3.char toTitleCase(char ch)

指定字符 转换为标题大小写(对于大多数 Unicode 字符,这与 toUpperCase 相同)。

java 复制代码
  System.out.println(Character.toTitleCase('a')); // 输出: A

  System.out.println(Character.toTitleCase('A')); // 输出: A

数字字符处理

1.int digit(char ch, int radix)

---将指定字符 转换为**指定基数(radix)**下的数字。( Character.digit('1', 2) )

一、方法功能

这个方法的作用是将给定的字符ch转换为指定基数radix)下的数字。基数 通常也称为进制 ,比如常见的十进制、二进制、十六进制等。

二、转换过程

  1. 首先,方法会根据给定的基数范围来判断字符是否可以被转换为数字。基数的合法范围通常是在 2 到 36 之间。
  2. 如果字符ch在指定基数下是一个有效的数字字符,那么方法会返回该字符对应的数字值。例如,在十进制下,字符'5'会被转换为数字 5;在十六进制下,字符'A'会被转换为数字 10。
  3. 如果字符不是有效的数字字符,或者基数不在合法范围内,方法将返回 -1。

三、使用场景

  1. 进制转换:在进行不同进制之间的转换时,可以使用这个方法将字符形式的数字转换为特定进制下的数值,以便进行进一步的计算和处理。
  2. 解析用户输入:当需要解析用户输入的数字字符串时,可以逐个字符地使用这个方法将字符转换为数字,然后进行后续的处理。
  3. 编程语言中的数值处理:在某些编程语言中,可能需要处理不同进制的数字表示。这个方法可以帮助在程序中进行进制相关的数值处理。
java 复制代码
  System.out.println(Character.digit('5', 10)); // 输出: 5

  System.out.println(Character.digit('A', 16)); // 输出: 10

2.char forDigit(int digit, int radix)

---将指定**基数(radix)**下的数字转换为对应的字符。( Character.forDigit(10, 16) )

java 复制代码
  System.out.println(Character.forDigit(5, 10)); // 输出: '5'

  System.out.println(Character.forDigit(10, 16)); // 输出: 'A'

Unicode 字符处理

1.int getType(char ch)

---返回指定字符Unicode 字符类型。( Character.getType('A') )
一、方法功能
这个方法用于确定给定字符ch的 Unicode字符类型 。Unicode 为世界上各种语言的字符分配了唯一的编码值,并根据字符的性质将它们分为不同的类型。
二、字符类型分类

  1. 字母:包括大写字母、小写字母和其他字母类字符。
  2. 数字:各种数字字符。
  3. 标点符号:如逗号、句号、问号等。
  4. 符号:包括数学符号、货币符号等各种特殊符号。
  5. 空白字符:如空格、制表符等。
  6. 控制字符:用于控制设备或数据传输的字符。
  7. 其他类型:一些特殊的、不属于上述分类的字符类型。

三、返回值含义
该方法返回一个整数,这个整数代表了字符的特定类型。不同的整数值对应不同的 Unicode 字符类型。
四、使用场景

  1. 文本处理:在处理文本时,可以根据字符的类型进行不同的操作。例如,对于字母可以进行大小写转换,对于数字可以进行数学运算,对于标点符号可以进行特定的格式处理。
  2. 语言分析:在自然语言处理或语言学研究中,可以通过分析字符类型来了解文本的结构和特征。
  3. 输入验证:在用户输入的处理中,可以检查输入的字符是否符合特定的类型要求,以确保输入的有效性。
java 复制代码
  System.out.println(Character.getType('A')); // 输出: UPPERCASE_LETTER

  System.out.println(Character.getType('5')); // 输出: DECIMAL_DIGIT_NUMBER

2.char toChars(int codePoint, char[] dst, int offset)

将指定的 Unicode代码点 转换为一个或多个字符,并将它们放入指定的字符数组中。

java 复制代码
  char[] dst = new char[2];

  Character.toChars(0x10000, dst, 0);

  System.out.println(new String(dst)); // 输出: 𐀀

3.int toCodePoint(char high, char low)

将一对代理项 (surrogate pair)转换为一个 Unicode 代码点

拓展:

在 Java 中,char类型的数据中\u开头的表示一个 Unicode 字符编码。

Unicode 是一种字符编码标准,它为世界上几乎所有的字符都分配了一个唯一的数字编号。在 Java 中,一个char类型占两个字节,可以表示一个 Unicode 字符。

例如,\u0041表示大写字母 A。

使用 Unicode 编码可以表示各种语言中的字符,包括中文、日文、韩文等。例如,\u4e2d表示汉字 "中"。

这种表示方法在处理国际化和多语言文本时非常有用,可以确保不同语言的字符都能正确地存储和处理。

需要注意的是,在 Java 中,字符串是由char类型的数组组成的,因此也可以使用 Unicode 编码来表示字符串中的字符。例如,String s = "\u4e2d\u56fd";表示字符串 "中国"。

java 复制代码
  char high = '\uD800';

  char low = '\uDC00';

  System.out.println(Character.toCodePoint(high, low)); // 输出: 65536

4.int codePointAt(CharSequence seq, int index)

返回指定索引处 的字符(Unicode 代码点)。

java 复制代码
  String str = "\uD800\uDC00";

  System.out.println(Character.codePointAt(str, 0)); // 输出: 65536

5.int codePointBefore(CharSequence seq, int index)

返回指定索引之前的字符(Unicode 代码点)。

java 复制代码
  String str = "\uD800\uDC00A";

  System.out.println(Character.codePointBefore(str, 2)); // 输出: 65536

6.int codePointCount(CharSequence seq, int beginIndex, int endIndex)

返回指定文本范围内的 Unicode 代码点数量。

java 复制代码
  String str = "\uD800\uDC00A";

  System.out.println(Character.codePointCount(str, 0, str.length())); // 输出: 2

字符类信息

1.boolean isIdentifierIgnorable(char ch)

---判断指定字符是否是标识符忽略字符。( Character.isIdentifierIgnorable('\u0000') )
一、方法功能
这个方法用于判断给定的字符ch是否为标识符忽略字符 。在编程语言中,标识符 通常是用于命名变量、方法、类等的名称。而标识符忽略字符是在某些特定情况下可以被忽略的字符,它们不影响标识符的有效性和识别
二、判断依据
该方法会根据特定的规则和标准 来确定一个字符是否应该被视为标识符忽略字符。这些规则可能因编程语言的不同而有所差异,但一般来说,标识符忽略字符通常包括空白字符(如空格、制表符、换行符等)、某些特殊的标点符号或其他在标识符中不具有实际意义的字符。
三、使用场景

  1. 编程语言解析:在编程语言的编译器或解释器中,这个方法可以用于确定在解析标识符时哪些字符可以被忽略。例如,在判断一个字符串是否是合法的变量名时,可以使用这个方法来排除那些不应该被包含在标识符中的字符。
  2. 文本处理 :在处理文本数据时,如果需要识别和提取标识符,这个方法可以帮助确定哪些字符可以被忽略,以便更准确地提取出有效的标识符。
  3. 国际化和本地化:在处理多语言文本时,可能需要考虑不同语言中的特殊字符和标点符号。这个方法可以用于确定哪些字符在特定的语言环境下可以被视为标识符忽略字符。
java 复制代码
  System.out.println(Character.isIdentifierIgnorable('\u0000')); // 输出: true

  System.out.println(Character.isIdentifierIgnorable('A')); // 输出: false

2.boolean isJavaIdentifierStart(char ch)

---判断指定字符是否是有效的 Java 标识符起始字符

java 复制代码
  System.out.println(Character.isJavaIdentifierStart('_')); // 输出: true

  System.out.println(Character.isJavaIdentifierStart('5')); // 输出: false

3.boolean isJavaIdentifierPart(char ch)

---判断指定字符是否是有效的 Java 标识符部分字符。( Character.isJavaIdentifierPart('A') )

java 复制代码
  System.out.println(Character.isJavaIdentifierPart('A')); // 输出: true

  System.out.println(Character.isJavaIdentifierPart('_')); // 输出: true

  System.out.println(Character.isJavaIdentifierPart('5')); // 输出: true

4.boolean isUnicodeIdentifierStart(char ch)

---判断指定字符是否是有效的 Unicode 标识符起始字符

拓展:

在 Java 中,有效的 Unicode 标识符起始字符有以下要求:

  1. 字母:包括大写和小写的拉丁字母(A-Z、a-z)、希腊字母、西里尔字母等。
  2. 美元符号($):虽然不建议以美元符号开头来命名标识符,但它是允许作为起始字符的。
  3. 下划线(_):下划线也是合法的起始字符。

标识符的后续字符 可以是字母、数字、美元符号和下划线的组合。

java 复制代码
  System.out.println(Character.isUnicodeIdentifierStart('\u03A9')); // 输出: true

  System.out.println(Character.isUnicodeIdentifierStart('5')); // 输出: false

5.boolean isUnicodeIdentifierPart(char ch)

---判断指定字符是否是有效的 Unicode 标识符部分字符

java 复制代码
  System.out.println(Character.isUnicodeIdentifierPart('\u03A9')); // 输出: true

  System.out.println(Character.isUnicodeIdentifierPart('_')); // 输出: true

  System.out.println(Character.isUnicodeIdentifierPart('5')); // 输出: true

字符属性

1.boolean isDefined(char ch)

---判断指定字符是否已定义

java 复制代码
  System.out.println(Character.isDefined('\u0000')); // 输出true

'\u0000' 是 Unicode 编码中的空字符(null character)。
一、表示形式
在 Java 和许多编程语言中,'\u0000' 以十六进制的 Unicode 编码表示形式出现。这个字符的十进制值为 0。
二、特点和用途

  1. 作为字符串结束标志:
    • 在某些编程语言中,字符串可能以 '\u0000' 作为结束标志。例如,在 C 语言中,字符串是以空字符 '\0'(即 '\u0000')结尾的字符数组。
    • 这种方式使得程序可以通过检测空字符来确定字符串的长度或结束位置。
  2. 特殊用途:
    • 在一些特定的编程场景中,'\u0000' 可能被用作特殊的标记或分隔符。例如,在某些数据结构或文件格式中,可能使用空字符来分隔不同的数据项或表示特定的状态。
  3. 注意事项:
    • 在处理包含 '\u0000' 的字符串时,需要特别小心。一些字符串处理函数可能会在遇到空字符时停止处理,或者可能会将空字符视为特殊的情况。
    • 此外,在输出包含 '\u0000' 的字符串时,可能需要特殊的处理方式,以确保空字符不会导致意外的结果。
相关推荐
鸽鸽程序猿4 分钟前
【算法】【优选算法】宽搜(BFS)中队列的使用
算法·宽度优先·队列
Jackey_Song_Odd4 分钟前
C语言 单向链表反转问题
c语言·数据结构·算法·链表
ProtonBase7 分钟前
如何从 0 到 1 ,打造全新一代分布式数据架构
java·网络·数据库·数据仓库·分布式·云原生·架构
Watermelo6178 分钟前
详解js柯里化原理及用法,探究柯里化在Redux Selector 的场景模拟、构建复杂的数据流管道、优化深度嵌套函数中的精妙应用
开发语言·前端·javascript·算法·数据挖掘·数据分析·ecmascript
乐之者v13 分钟前
leetCode43.字符串相乘
java·数据结构·算法
A懿轩A1 小时前
C/C++ 数据结构与算法【数组】 数组详细解析【日常学习,考研必备】带图+详细代码
c语言·数据结构·c++·学习·考研·算法·数组
古希腊掌管学习的神1 小时前
[搜广推]王树森推荐系统——矩阵补充&最近邻查找
python·算法·机器学习·矩阵
云边有个稻草人1 小时前
【优选算法】—复写零(双指针算法)
笔记·算法·双指针算法
半盏茶香1 小时前
在21世纪的我用C语言探寻世界本质 ——编译和链接(编译环境和运行环境)
c语言·开发语言·c++·算法
忘梓.2 小时前
解锁动态规划的奥秘:从零到精通的创新思维解析(3)
算法·动态规划