首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么Character.digit在java8 jjs中的输出不正确

为什么Character.digit在java8 jjs中的输出不正确
EN

Stack Overflow用户
提问于 2015-12-11 04:09:57
回答 1查看 51关注 0票数 2

使用java8 jjs来研究jdk并发现这一点,请参阅下面的内容:

代码语言:javascript
复制
jjs> var result = java.lang.Character.digit('473'.charAt(0),10)
jjs> result
-1
jjs> '473'.charAt(0)
4

但是如果我在java中执行上面的代码,就会得到4。

代码语言:javascript
复制
System.out.println(Character.digit('4', 10));//4

为什么在jj中它返回-1?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-11 09:28:44

这与Java方法的自动解析有关。由于字符在内部表示为int,纳什霍恩将将数字方法解析为接受Unicode codePoint (int)和基的方法。

如果要确保调用接受字符(char)和基的数字方法,则应显式解析要调用的方法,如下所示:

代码语言:javascript
复制
$ jjs
jjs> var digit = java.lang.Character['digit(char,int)']
jjs> digit('473'.charAt(0), 10)
4
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34215977

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档