文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
9. 字符串和字符字面量
在 Groovy 中,由单引号所创建的字面量属于 String
类型对象,而双引号创建的字面量则可能是 String
或 GString
对象,具体分类由字面量中是否有插值来决定。
assert 'c'.getClass()==String
assert "c".getClass()==String
assert "c${1}".getClass() in GString
当把一个包含单个字符的 String
对象赋予一个 char
类型变量时,Groovy 会自动将该对象转换为 char
类型。在调用带有 char
类型实参的方法时,我们需要显式地转换参数值,或者确认参数值已经预先转换过了。
char a='a'
assert Character.digit(a, 16)==10 : 'But Groovy does boxing'
assert Character.digit((char) 'a', 16)==10
try {
assert Character.digit('a', 16)==10
assert false: 'Need explicit cast'
} catch(MissingMethodException e) {
}
Groovy 支持两种转换模式。在把一个多字符的字符串转换为 char
类型对象时,两种模式的转换结果会有微小的差别:Groovy 模式的转换更宽容一些,只取第一个字符;C 模式的转换则出现异常错误,从而失败。
// 对于仅包含单个字符的字符串,两种转换模式是等效的
assert ((char) "c").class==Character
assert ("c" as char).class==Character
// 对于包含多个字符的字符串来说,两种模式的结果并不相同
try {
((char) 'cx') == 'c'
assert false: 'will fail - not castable'
} catch(GroovyCastException e) {
}
assert ('cx' as char) == 'c'
assert 'cx'.asType(char) == 'c'
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论