返回介绍

12. 转换

发布于 2025-01-04 00:44:51 字数 6621 浏览 0 评论 0 收藏 0

Java 能够自动执行一些扩宽转换和缩减转换,关于转换的概念参见 这里

表 1 Java 转换

转换目的类型
转换源类型booleanbyteshortcharintlongfloatdouble
boolean-NNNNNNN
byteN-YCYYYY
shortNC-CYYYY
charNCC-YYYY
intNCCC-YTY
longNCCCC-TT
floatNCCCCC-Y
doubleNCCCCCC-

* Y 表示 Java 可以执行的转换。 C 表示的是在显式转换时 Java 能够执行的转换。 T 表示 Java 可以执行的转换,但数据被截断了。 N 表示 Java 所不能实行的转换。

Groovy 大大扩展这些转换。

表 2 Groovy 转换

转换目的类型
转换源类型booleanBooleanbyteByteshortShortcharCharacterintIntegerlongLongBigIntegerfloatFloatdoubleDoubleBigDecimal
boolean-BNNNNNNNNNNNNNNNN
BooleanB-NNNNNNNNNNNNNNNN
byteTT-BYYYDYYYYYYYYYY
ByteTTB-YYYDYYYYYYYYYY
shortTTDD-BYDYYYYYYYYYY
ShortTTDTB-YDYYYYYYYYYY
charTTYDYD-DYDYDDYDYDD
CharacterTTDDDDD-DDDDDDDDDD
intTTDDDDYD-BYYYYYYYY
IntegerTTDDDDYDB-YYYYYYYY
longTTDDDDYDDD-BYTTTTY
LongTTDDDTYDDTB-YTTTTY
BigIntegerTTDDDDDDDDDD-DDDDT
floatTTDDDDTDDDDDD-BYYY
FloatTTDTDTTDDTDTDB-YYY
doubleTTDDDDTDDDDDDDD-BY
DoubleTTDTDTTDDTDTDDTB-Y
BigDecimalTTDDDDDDDDDDDTDTD-

* Y 表示 Groovy 可以执行的转换。 D 表示的是在动态编译或显式转换时 Groovy 能够执行的转换。 T 表示 Groovy 可以执行的转换,但数据被截断了。 B 表示装箱/拆箱操作。 N 表示 Groovy 不能实行的转换。

在转换为 boolean / Boolean 时,截断使用的是 Groovy Truth 。从数值转换为字符是将 Number.intvalue() 转换为 char 。从 FloatDouble 转换时,Groovy 使用 Number.doubleValue() 来构建 BigIntegerBigDecimal ,否则将使用 toString() 来构建。其他转换则有 java.lang.Number 所定义的行为。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文