侧边栏壁纸
博主头像
Z同学博主等级

工作磨平激情前,坚持技术的热忱。 欢迎光临Z同学的技术小站。 分享最新的互联网知识。

  • 累计撰写 283 篇文章
  • 累计创建 55 个标签
  • 累计收到 93 条评论

Kotlin 数据类型转换,隐式转换与显式转换

Z同学
2021-12-12 / 0 评论 / 0 点赞 / 721 阅读 / 1,456 字
温馨提示:
本文最后更新于 2021-12-12,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

前言

本篇主要介绍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在计算过程中根据上下文环境进行隐式转换。

但是这种转换也是有规则的。并不是随意决定数据类型的。

数值一数值二转换后的类型
ByteByteInt
ByteShortInt
Byte,ShortIntInt
Byte,Short,IntLongLong
Byte,Short,Int,LongFloatFloat
Byte,Short,Int,Long,FloatDoubleDouble

下面使用实例介绍一下,让大家更能理解上面的表格的意思吧。

//声明几种数据类型
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的几种显式转换和隐式转换就说明白了。

所以,如果计算起来了需要注意参数最后的转换结果啊,别弄错了

0

评论区