character.digit 是 java 中将单个字符按指定进制解析为对应数值的静态方法,参数为字符和进制(2–36),合法返回0–35,非法返回-1,不支持字符串转换。

Character.digit 是 Java 中用于将**单个字符**解析为对应进制下数字值的静态方法。它不负责字符串转换,也不做进制转换运算,而是根据给定的进制(radix),判断该字符是否是该进制下的合法数字字符,并返回其数值。
方法签名与基本用法
方法定义如下:
public static int digit(char ch, int radix)它接收两个参数:
-
ch:待解析的字符(如
'0'、'A'、'f') -
radix:目标进制(必须在
Character.MIN_RADIX(2)到Character.MAX_RADIX(36)之间)
返回值是该字符在指定进制下对应的数值(0–35),如果字符不合法(比如在十六进制中传入 'G'),则返回 -1。
常见进制示例
✅ 十进制(radix = 10):
Character.digit('7', 10) → 7Character.digit('a', 10) → -1 // 'a' 不是十进制数字
✅ 十六进制(radix = 16):
使用约定式提交(Conventional Commits)从 Git 历史记录中生成结构化变更日志,支持多种格式、AI 增强型描述以及可自定义的范围……
Character.digit('f', 16) → 15 // 不区分大小写
Character.digit('g', 16) → -1
✅ 二进制(radix = 2):
Character.digit('1', 2) → 1Character.digit('2', 2) → -1
注意点和易错情况
⚠️ 该方法只处理单个字符,不能直接转换字符串(如 "FF")。要转字符串需配合循环或 Integer.parseInt(str, radix)。
⚠️ 进制超出范围(如 radix = 1 或 radix = 64)会直接抛出 IllegalArgumentException。
⚠️ 字符必须是 Unicode 数字字符(如 '0'–'9'、'A'–'Z'、'a'–'z'),且在当前进制下有效。例如 'Z' 在 radix=36 下是合法的(值为 35),但在 radix=16 下无效。
实用小技巧
你可以用它快速校验并提取单字符数字值,比如写一个简易的十六进制字符解析工具:
char c = 'B';int value = Character.digit(c, 16);
if (value != -1) {
System.out.println("对应数值:" + value); // 输出 11
}
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










