其他分享
首页 > 其他分享> > Scala类型自动转换强制转换

Scala类型自动转换强制转换

作者:互联网

当Scala程序在进行赋值或者运算时,精度小的类型自动转换为精度大的数值类型,这个就是自动类型转换(隐式转换)。数据类型按精度(容量)大小排序为:

(1)自动提升原则:有多种类型的数据混合运算时,系统首先自动将所有数据转换成精度大的那种数据类型,然后再进行计算。

(2)把精度大的数值类型赋值给精度小的数值类型时,就会报错,反之就会进行自动类型转换。

(3)(byte,short)和char之间不会相互自动转换。

(4)byte,short,char他们三者可以计算,在计算时首先转换为int类型。

注意:Scala还提供了非常强大的隐式转换机制(隐式函数,隐式类等)

 强制类型转换

1)基本说明

自动类型转换的逆过程,将精度大的数值类型转换为精度小的数值类型。使用时要加上强制转函数,但可能造成精度降低或溢出,格外要注意。

Java  :  int num = (int)2.5

Scala :  var num : Int = 2.7.toInt

案例实操

(1)将数据由高精度转换为低精度,就需要使用到强制转换

(2)强转符号只针对于最近的操作数有效,往往会使用小括号提升优先级

object TestForceTransfer {

 

    def main(args: Array[String]): Unit = {

//(1)将数据由高精度转换为低精度,就需要使用到强制转换

        var n1: Int = 2.5.toInt // 这个存在精度损失

        //(2)强转符号只针对于最近的操作数有效,往往会使用小括号提升优先级

        var r1: Int = 10 * 3.5.toInt + 6 * 1.5.toInt  // 10 *3 + 6*1 = 36

        var r2: Int = (10 * 3.5 + 6 * 1.5).toInt  // 44.0.toInt = 44

        println("r1=" + r1 + " r2=" + r2)

    }

}

数值类型和String类型间转换

1)基本说明

在程序开发中,我们经常需要将基本数值类型转成String类型。或者将String类型转成基本数值类型。

2)案例实操

(1)基本类型转String类型(语法:将基本类型的值+"" 即可)

(2)String类型转基本数值类型(语法:s1.toInt、s1.toFloat、s1.toDouble、s1.toByte、s1.toLong、s1.toShort)

object TestStringTransfer {

    def main(args: Array[String]): Unit = {

        //(1)基本类型转String类型(语法:将基本类型的值+"" 即可)

        var str1 : String = true + ""

        var str2 : String = 4.5 + ""

        var str3 : String = 100 +""

        //(2)String类型转基本数值类型(语法:调用相关API)

        var s1 : String = "12"

        var n1 : Byte = s1.toByte

        var n2 : Short = s1.toShort

        var n3 : Int = s1.toInt

        var n4 : Long = s1.toLong

    }

}

注意事项

在将String类型转成基本数值类型时,要确保String类型能够转成有效的数据,比如我们可以把"123",转成一个整数,但是不能把"hello"转成一个整数。

var n5:Int = "12.6".toInt会出现NumberFormatException异常。

 

标签:转换,String,Scala,s1,toInt,类型,var,强制,精度
来源: https://blog.csdn.net/qq_39674417/article/details/111355875