布衣王子

Email:roose2008@gmail.com QQ:79212131

我被一个初学者考傻了,关于java.lang.Character.digit(char ch, int radix)方法

一个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。如果以下条件中至少有一个为真,则字符是一个有效数字:

  •  
    • 方法 isDigittrue,且字符(或分解的单字符)的 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)
 

posted on 2008-09-26 12:19 草包书生 阅读(12407) 评论(7)  编辑  收藏

评论

# re: 我被一个初学者考傻了,关于java.lang.Character.digit(char ch, int radix)方法 2008-09-26 14:07 Meatball

把radix进制的字符转为10进制
int x=Character.digit('c', 16); 是把16进制的c转为10进制=12  回复  更多评论   

# re: 我被一个初学者考傻了,关于java.lang.Character.digit(char ch, int radix)方法 2008-09-26 19:02 mingj

Integer,Float,Double都有parseXXX方法
自然Character也不应该少这样的方法

至于实现原因, api已经说的很明白了  回复  更多评论   

# re: 我被一个初学者考傻了,关于java.lang.Character.digit(char ch, int radix)方法[未登录] 2008-09-26 22:53 草包书生

哎,原来是这样简单的一回事,小弟真是孤陋寡闻啊!谢谢了  回复  更多评论   

# re: 我被一个初学者考傻了,关于java.lang.Character.digit(char ch, int radix)方法 2009-12-22 11:08 路过

Character.digit('c', 16),表示输出字符'c'代表的16进制数,16进制中a、b、c、d、e、f分别表示为10、11、12、13、14、15,所有这里输出的是12  回复  更多评论   

# re: 我被一个初学者考傻了,关于java.lang.Character.digit(char ch, int radix)方法 2013-08-25 10:10 itfanr

@路过
没错~~~~~~~~  回复  更多评论   

# re: 我被一个初学者考傻了,关于java.lang.Character.digit(char ch, int radix)方法 2015-02-27 14:28 陈琪琪

@Meatball
不对吧,如果按照你说的那样的话,那么我把16改成8,结果应该是多少呢?  回复  更多评论   

# re: 我被一个初学者考傻了,关于java.lang.Character.digit(char ch, int radix)方法 2015-02-27 14:35 陈琪琪

@陈琪琪
应该是-1  回复  更多评论   


只有注册用户登录后才能发表评论。


网站导航:
 

导航

常用链接

相册

java的相关连接

最新评论