当前位置: 首页 > Web前端 > HTML

Scala基础知识(五):Scala变量(二)数据类型

时间:2023-04-02 15:47:18 HTML

1Scala数据类型简介Scala拥有与Java相同的数据类型。在Scala中,数据类型都是对象,也就是说Scala没有Java中Scala的原生类型。数据类型分为两类:AnyVal(值类型)和AnyRef(引用类型)。注意:AnyVal和AnyRef都是对象。相对于java的类型系统,scala要复杂的多!正是这种复杂多变的类型系统,将面向对象编程和函数式编程完美融合2Scala数据类型系统概述图3Scala数据类型列表Scala整型常量/字面量默认为Int类型,后加'l'或'L'声明Long类型常量/文字。字符类型性质的讨论要在计算机中存储字符类型,需要找出字符对应的编码值(整数)并存储:字符—>编码值—>二进制—>存储和读取:二进制—>codevalue——>Character-->读取Unit类型,Null类型和Nothing类型1)Null类只有一个实例对象,null,类似于Java中的null引用。Null可以赋给任何引用类型(AnyRef),但不能赋给值类型(AnyVal:如Int、Float、Char、Boolean、Long、Double、Byte、Short)2)Unit类型用于标识过程,即没有明确的返回值的函数。可见Unit类似于Java中的void。Unit只有一个实例,(),这个实例没有实际意义3)Nothing,可以作为没有正常返回值的方法的返回类型,很直观的告诉你这个方法不会正常返回,并且由于Nothing是任何其他类型的子类,它也与需要返回值的方法兼容。4值类型转换Scala程序在进行赋值或运算时,会自动将精度低的类型转换为精度高的数据类型。这就是自动类型转换(隐式转换)。案例展示自动类型转换详解1)当存在多种类型的数据混合运算时,系统首先自动将所有数据转换为容量最大的数据类型,然后进行计算。5.6+10="double2)当我们将精度(容量)高的数据类型赋给精度(容量)小的数据类型时,会报错,否则会进行自动类型转换。3)(byte,short)和char不会自动相互转换4)byte,short,char这三个都可以计算,计算时先转换为int类型5)自动提升原理:表达式结果的类型为automaticallypromotedtothelargesttypeintheoperand5强制类型转换是自动类型转换的逆过程,将容量大的数据类型转换为容量小的数据类型,使用时需要加强制转换java:intnum=(int)2.5scala:varnum:Int=2.7.toInt//对象强制类型转换说明1)当数据改变时从大到小,需要使用强制转换2)强制转换符号只对最近的操作数有效,常使用括号来提高优先级3)Char类型可以保存Int的常量值,但不能保存Int的常量值Int的变量值,需要转换4)Byte和Short类型在执行操作时,作为Int类型处理。6值类型和String类型的转换Basic类型到String类型语法:只需将基本类型的值加上“”案例演示:String类型到基本数据类型语法:使用基本类型String的toXxx方法