kotlin – 数字类型的自动转换
在Java中 ,我们可以将int
赋值为double
,例如double x = 123
;
在kotlin ,我们得到了一个编译错误。
问题:我们可以在kotlin
启用自动转换功能吗? 为什么kotlin
默认没有这个功能?
var x: Double = 123; // ERROR
再举一个例子:
fun foo(x: Double) { } fun main(args: Array<String>) { foo(123.0); // OK foo(123); // ERROR }
更新:
文字123
可以在编译时自动转换为Short
或Long
。 但它不会被转换为Float
或Double
。
fun fooShort(x: Short) {} fun fooInt(x: Int) {} fun fooLong(x: Long) {} fun main(args: Array<String>) { fooShort(123) // OK fooInt(123) // OK fooLong(123) // OK }
不,这不会发生。 由于kotlin
是强类型的意思类型不被隐式强制 。 你需要一个明确的类型转换。 从显式转换的Kotlin参考中可以看出:
由于不同的表述,较小的类型不是较大的类型。 因此,较小的类型不会被隐式转换为较大的类型。 […]我们可以使用显式转换来扩大数字。