在Groovy中键入Casting

时间:2011-10-01 09:48:44

标签: groovy

我有两个问题。

我使用以下代码查找$的ASCII值:

def a = "\$"
def b = (int)a 
println b //prints 36

我很满意答案。但当我试图像这样反过来时,我发现我错过了一些东西:

def a = 36
String b = a
println b // getting output only 36 

问题1:

所以我的第一个问题是为什么打印36,为什么不打$?我错了吗?

如果相同的第一个代码块被重写为:

    def a = "\$"
    def b = a as int
    println b

如果我运行此程序,我会收到如下错误:

Caught: java.lang.NumberFormatException: For input string: "$"
    at T.run(T.groovy:2)

尽管我正在尝试和以前一样。我收到了一个错误。

问题2:

那么为什么as关键字在这里不起作用,def a = (int)b 不等于def a = b as int?解释一下。

提前致谢。

1 个答案:

答案 0 :(得分:7)

当你将一个字符串转换为int时,你可以使用一个char,所以我们可以说你将一个char转换为int,当你尝试将int转换为一个字符串我认为它使用toString方法或类似的东西。尝试将36投射到char,你会看到你的'$'