前言
本篇主要介绍Kotlin中的数值类型的转换。因为kotlin也有int,long,short,double等数值类型的数据对象。
Kotlin是一种强调安全的语言,针对类型的检查非常严格。
对于不同类型的数值进行赋值是禁止的。
概念
显式转换: 必须开发人员主动调用函数执行的变量类型变化叫做显式转换。
隐式转换:不需要开发人员主动调用,系统编译器自动进行数据变量类型变化的叫做隐式转换。
赋值与显式转换
var zin:Byte =13
var yan:short = zin
如果是上面这种赋值方式。会提示编译错误。
而我们在其他的语言中例如,java,C等语言中是可以编译成功的。因为这些语言定义从小范围数到大范围数的转换是隐式的。也就是编译器会自动帮我们进行转换。
但是在Kotlin中这种方式将会受到严格限制。必须使用函数进行显式转换。
Kotlin中有6种数值类型 :Byte,Short,Int,Long,Float,Double 。以及字节的Char类型
这几种类型,都有如下的七个转换函数:(方便我们将数值转换为对应数据类型)
- toByte()
- toShort()
- toInt()
- toLong()
- toFloat()
- toDouble()
- toChar()
可以让7种类型的变量调用上面的7个方法任意转换。
示例:
val byteNum:Byte =13
val shortNum:Short = byteNum.toShort() // Byte类型转换为Short类型
val intNum:Int =byteNum.toInt() //Byte类型转Int类型
val charNum = 'z'
val zinyan:int=charNum.toInt() //char类型转换为int 类型
注意
这种转换,如果从大范围数值例如Long 转小范围数值int等。大数超过小数的高位字节数值将会被截掉,可能会造成数值转换后数据精度丢失问题。
如果long=1 转int =1 这种数值范围没有超过小数范围的转换那还是相对准确的。
这种情况不止是Kotlin。几乎所有的开发语言都有这个特性。
计算与隐式转换
上面都是参数的直接转换,那么如果在多种参数混合计算的情况下。
也这么转换那太繁琐了。所以Kotlin在计算过程中根据上下文环境进行隐式转换。
但是这种转换也是有规则的。并不是随意决定数据类型的。
数值一 | 数值二 | 转换后的类型 |
---|---|---|
Byte | Byte | Int |
Byte | Short | Int |
Byte,Short | Int | Int |
Byte,Short,Int | Long | Long |
Byte,Short,Int,Long | Float | Float |
Byte,Short,Int,Long,Float | Double | Double |
下面使用实例介绍一下,让大家更能理解上面的表格的意思吧。
//声明几种数据类型
val b: Byte =12
val s: Short =13
val i: Int= 16
val l: Long= 16L
val f: Float =10.8f
val d: Double =123.0L
//介绍转换规则
var value1 = b+b //结果Int类型
var value2 = b+s //结果Int类型
var value3 = b+s+i //结果Int类型
var value4 = b+s+i+l //结果Long类型
var value5 = b+s+i+f/l //结果Float类型
var value6 = b*s+i+f/l+d //结果Double类型
到这里Kotlin的几种显式转换和隐式转换就说明白了。
所以,如果计算起来了需要注意参数最后的转换结果啊,别弄错了
评论区