使用java8 jjs学习jdk api并找到了这个,见下文:
jjs> var result = java.lang.Character.digit('473'.charAt(0),10)
jjs> result
-1
jjs> '473'.charAt(0)
4
但如果我在java main中执行了上面的代码,那就得到4。
System.out.println(Character.digit('4', 10));//4
为什么在jjs中它返回-1?
答案 0 :(得分:2)
这与Java方法的自动解决有关。由于char在内部表示为int,因此Nashorn会将digit方法解析为接受Unicode codePoint(int)和radix的方法。
如果要确保调用接受字符(char)和基数的digit方法,则应明确解析要调用的方法,如下所示:
$ jjs
jjs> var digit = java.lang.Character['digit(char,int)']
jjs> digit('473'.charAt(0), 10)
4