zoukankan      html  css  js  c++  java
  • 值类型转换

    值类型转换

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

  • 相关阅读:
    虚函数
    class与struct的区别
    HTTP是什么连接
    长连接与短连接
    多线程的主要优点
    overload、override、overwrite的介绍
    常用的Linux命令
    IO模型——IO多路复用机制
    栈区与堆区的区别
    软链接和硬链接到底有啥区别
  • 原文地址:https://www.cnblogs.com/yxym2016/p/14082723.html
Copyright © 2011-2022 走看看