值类型转换

值类型转换

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,否则会抛出异常。

原文地址:https://www.cnblogs.com/yxym2016/p/14082723.html