String 将字符串赋给整数时Groovy的不一致行为
运行此代码时:String 将字符串赋给整数时Groovy的不一致行为,string,groovy,type-conversion,integer,String,Groovy,Type Conversion,Integer,运行此代码时: String number = "1" Integer x println number x = number println(x) String number = "10" Integer x println number x = number println(x) 输出为: 一, 49 运行此代码时: String number = "1" Integer x println number x = number
String number = "1"
Integer x
println number
x = number
println(x)
String number = "10"
Integer x
println number
x = number
println(x)
输出为:
一,
49
运行此代码时:
String number = "1"
Integer x
println number
x = number
println(x)
String number = "10"
Integer x
println number
x = number
println(x)
我得到:
十,
org.codehaus.groovy.runtime.typehandling.GroovyCastException:无法
将类为“java.lang.String”的对象“10”强制转换为类
“java.lang.Integer”
我知道使用
toInteger
可以解决这个问题,最好不要陷入这样的情况,但它的行为方式是不一致的,我对内部工作方式很好奇。第一个示例的内部工作方式是,字符0
的长度为48,而对于1
的长度为49
换句话说,表达式:
Integer x = "1"
正在要求groovy将字符1
转换为一个整数,它很乐意这样做,并返回整数ascii值49。java中也会发生同样的情况:
char c = "1".charAt(0);
int i = (int) c;
System.out.println(i);
也印了49张
这与字符串“10”不同,不再可能将这两个字符强制为单个int(ascii值),因为现在有两个字符。您的问题是什么?