值类型转换
值类型转换
1、值隐式类型转换
在Scala中,进行赋值或者运算时,精度小的类型自动转换成精度大的数据类型,这个就是隐式(自动)类型转换。
对于值类型来说,数据类型按照精度大小排序为:
Double > Float > Long > Int > Short > Byte
(byte, short) 和 char 之间不会相互自动转换。
byte,short,char他们三者可以计算,在计算时首先转换为int类型。
自动提升原则: 表达式结果的类型自动提升为操作数中最大的类型
有多种类型的数据混合运算时,系统首先自动将所有数据转换成容量最大的那种数据类型,然
后再进行计算;
当我们把精度(容量)大的数据类型赋值给精度(容量)小的数据类型时,就会报错,反之就会进
行自动类型转换。
2、强制类型转换
自动类型转换的逆过程,将容量大的数据类型转换为容量小的数据类型。使用时要加上强制转函 数,但可能造成精度降低或溢出,格外要注意。
强转符号只针对于最近的操作数有效,往往会使用小括号提升优先级。
var num : Int = 2.7.toInt
var num2 : Int = (10 * 3.5 + 6 * 1.5).toInt
Char类型可以保存Int的常量值,但是不能保存Int的变量值,需要强转。
Byte 和 Short 类型在进行运算时,当做 Int 类型处理,即Byte类型加上Short类型的值,结果是Int类型,不能再直接赋值给Byte或者Short类型的变量,但是可以直接赋值给没有明确声明类型的变量(类型推导)
3、值类型和String类型转换
(1)基本类型转String
基本数据类型值+"" 即可
(2)String类型转基本数据类型
基本类型的String的toXXX方法即可。
确保String类型能够转换成有效的数据,对于"12.5",不能转换成Int,否则会抛出异常。