Character.digit()详解

本文详细介绍了java.lang.Character.digit()方法,讨论了在不同基数和字符条件下的返回值,包括数字字符和字母字符的转换规则,以及各种情况下的返回值范围,帮助理解如何将数字字符串和字母转换为0~35之间的数值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

java.lang.Character.digit(char ch, int radix)方法 :

在指定的基数返回字符ch的数值,如果基数是不在范围内MIN_RADIX≤基数≤MAX_RADIX或如果该值的通道是不是一个有效的数字在指定的基数-1,则返回。

public final class Character implements java.io.Serializable, Comparable<Character> {

     public static final int MIN_RADIX = 2;


     public static final int MAX_RADIX = 36;
}

也就是说radix的赋值范围2<=radix<=36,任何这个范围外的值,返回值都为-1(这个是必要条件,下面几种情况必须建立在此条件基础上)

 

以下是如果至少有一个字符是一个有效的数字:

方法isDigit为true的字符和Unicode字符的十进制数值(或分解的单字符)小于指定的基数。在这种情况下的十进制数字值被返回。

参数ch为数字字符时,若参数ch小于参数radix,则返回参数ch的整数类型。否则返回-1

  int digit = Character.digit('0', 2);      返回值 0
  int digit2 = Character.digit('9', 36);    返回值 9

返回值范围0~9

该字符是一个大写拉丁字母'A'到'Z'和它的代码是小于基数+'A' - 10。在这种情况下,ch - 'A'+10返回。

参数ch为大写字母A~Z时(参考ASCII码表,十进制取值范围在65~90),若参数ch的十进制数小于参数(radix+55),则返回参数(ch-55)

int digit = Character.digit('A', 11);   返回值 10
int digit2 = Character.digit('Z', 36);  返回值 35

此处ch参数最小是A,所以要保证不返回-1,则参数radix必须大于10(且小于等于36),也就是,radix的取值范围11~36

结果返回值范围在10~35

 

剩下三种情况:

字符的小写拉丁字母'a'到'z'和它的代码小于radix+'A' - 10。在这种情况下,ch - 'a'+10返回。

字符是一个全角大写拉丁字母A('\ uFF21')到Z('\ uFF3A“)和它的代码小于radix+'\ uFF21” - 10。在这种情况下,ch - '\ uFF21'+ 10返回。

该字符是一个小写拉丁字母的全角('\ uFF41')到Z('\ uFF5A“),且它的代码小于radix+'\ uFF41” - 10。在这种情况下,ch - '\ uFF41'+10返回。

这三种情况和上面这种情况相同,结果返回值范围在10~35

还有一个方法,java.lang.Character.digit(int ch, int radix),参数ch取值为A~Z,a~z的十进制数,返回结果与字母相同

总结一下, Character.digit()在取值正确的范围下,返回值在0~35之间,返回值若是0~9之间,则参数ch必为0~9的数字字符串,返回值在10~35之间,则参数必为字母。

radix中文翻译是基数,好像部分文档里也翻译为进制,总之这个方法是把数字字符串和字母(忽略大小写)转换成0~35之间的一个数而已

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值