在Java中Character.fordigit()中基数的意义是什么?

在Java中Character.fordigit()中基数的意义是什么?,java,Java,有人能帮我理解基数在该方法中的意义吗?选择合适的基数可以生成非十进制数字的“数字”——例如,如果基数通过16,则可以生成数字10到15的字符,因为十六进制计数使用16位数字-0到9,后面是A到F: char ten = Character.forDigit(10, 16); // returns 'a' 它是数字的基数。通常使用基数10(即0-9)。但是,您可能也对使用十六进制(例如0-9,A-F)感兴趣。那么基数将是16 例如: Character.forDigit(8, 16)=8 Cha

有人能帮我理解基数在该方法中的意义吗?

选择合适的基数可以生成非十进制数字的“数字”——例如,如果基数通过16,则可以生成数字10到15的字符,因为十六进制计数使用16位数字-0到9,后面是A到F:

char ten = Character.forDigit(10, 16); // returns 'a'

它是数字的基数。通常使用基数10(即0-9)。但是,您可能也对使用十六进制(例如0-9,A-F)感兴趣。那么基数将是16

例如:

Character.forDigit(8, 16)=8
Character.forDigit(9, 16)=9
Character.forDigit(10, 16)=a
Character.forDigit(11, 16)=b

这是一个棘手的问题,因为它的重要性并不像第一次出现时那么明显。将字符串转换为整数时,基数当然非常重要。如果将
“101”
转换为整数,则根据基数(基数)是二进制(2)、十进制(10)、八进制(8)、十六进制(16)还是任何其他基数,您将得到不同的答案。类似地,当将整数转换为字符串时,结果(当源为>=MAX_基数时)对于不同的半径都是不同的

对于数字,答案并不那么清楚。当您将数字转换为表示数字的单个字符时,只要该数字对基数有效,则答案始终相同。因此,
Character.forDigit(11,基数)
总是返回
'b'
所有半径为12及以上的字符。所以唯一的意义在于它如何处理数字对基数无效的情况?也就是说,对于二进制(基数=2),
forDigit
仅在数字为0或1时有效;既然2不是一个有效的二进制数字,那么如果你说
Character.forDigit(2,2)
,它该怎么办呢

语言设计人员可以做一些事情:(1)去掉基数参数,让程序员负责确保数字在范围内(在许多情况下,这是给定的);(2) 抛出异常;(3) 返回一些特殊值。他们选择了(3):如果给它一个对基数无效的数字,它将返回空字符
'\0'
。这似乎不是最好的选择——您不太可能真的想在任何事情上使用null字符,这意味着您必须进行自己的检查,这意味着他们可能应该让方法抛出异常。但它在那里


但无论如何,
radix
对于这种方法的意义在于:它根据基数执行检查,以确保参数在范围内。

radix是计算基数。我们通常以10为基数,但并不总是这样——尤其是在计算机世界;不要使用所有的大写。我重新打开了它,因为
Character.forDigit
的答案与
Integer.toString
Integer.parseInt
的答案不同,并且作为副本给出的答案没有涵盖
forDigit
。谢谢,朋友!这有助于理解这个概念。这是理解它的最简单方法。美好的