一个java初学者在看大连理工大学出版社出版的书(书名是《java面向对象程序设计》)时向我问了下面这样一个问题。 为什么:
int x=Character.digit('c', 16);
System.out.println("x="+x);
结果输出为 F12
作者杨兴凯在不在博客圆,应该拉出来打。
这样的错误也犯,还写书。我想我也可以写书了。这也是个小问题,经过程序验证结果应该是12。上面两句代码的执行过程小弟有些含糊不清,上面的两句执行过程是将c的十进制减去a的十进制然后加上10。
这个方法是用来做什么的呢?
虽然小弟要弄清楚了上面的输出结果是怎样出来的,但是我不懂这样比较后有加又减的到底有什么意义,这个方法在那些地方可能会用到。就连下面的API我也一点也看不懂,难道这个方法是用来做大小写转换的吗?能不能举一个这个方法实际应用的实例呢?
java.lang.Character.digit(char ch, int radix)API
public static int digit(char ch,
int radix)
- 返回使用指定基数的字符
ch
的数值。
如果基数不在 MIN_RADIX
<= radix
<= MAX_RADIX
范围之内,或者 ch
的值是一个使用指定基数的无效数字,则返回 -1
。如果以下条件中至少有一个为真,则字符是一个有效数字:
-
- 方法
isDigit
为 true
,且字符(或分解的单字符)的 Unicode 十进制数值小于指定的基数。在这种情况下,返回十进制数值。
- 字符为
'A'
到 'Z'
范围内的大写拉丁字母之一,且它的代码小于 radix + 'A' - 10
。在这种情况下,返回 ch - 'A' + 10
。
- 字符为
'a'
到 'z'
范围内的小写拉丁字母之一,且它的代码小于 radix + 'a' - 10
。在这种情况下,返回 ch - 'a' + 10
。 (这里我一点也看不懂)
注:此方法无法处理增补字符。若要支持所有 Unicode 字符,包括增补字符,请使用 digit(int, int)
方法。
-
-
- 参数:
ch
- 要转换的字符。
radix
- 基数。
- 返回:
- 使用指定基数的字符所表示的数值。
- 另请参见:
forDigit(int, int)
, isDigit(char)
-