数据类型
Byte、Short、Int、Long、Char、String、Float、Double、Boolean
注:Scala数据类型与Java的区别
- scala中所有的类型都使用大写字母开头
- 整形使用Int而不是Integer
- scala中定义变量可以不写类型,让scala编译器自动推断
- scala中默认的整形是Int,默认的浮点型是Double
Scala数据类型的层次结构:
其中:
Any:所有类型的父类,它有两个自雷AnyRef和AnyVal
AnyVal:所有数值类型的父类
AnyRef:所有对象类型(引用类型)的父类
Unit:表示空,Unit是AnyVal的子类,类似于Java中的 void,但 scala要Java更加面向对象
Null:Null是 AnyRef的子类,也就是说它是所有引用类型的子类,可以将null赋值给任何引用对象类型
Noting:所有类型的子类,不能直接创建该类型实例,某个方法抛出异常时,返回的就是 Nothinge类型,因为Nothing是所有类的子类,那么它可以赋值为任何类型
类型转换
自动类型转换
概念:范围小的数据类型值会自动转换为范围大的数据类型值
数据类型范围:byte -> Short -> Char -> Int -> long -> Float -> Double
示例:
val a:Int = 3
val b:Double = 3 + 2.21 //因为是int类型和 double:类型的值进行计算,所以最终结果为: Double类型
val c:Byte = a + 1 //这样写会报错,因为最终计算结果是Int类型的数据,将其值Byte类型肯定不行
强制类型转换
概念:范围大的数据类型值会强制转换为范围小的数据类型值
注:使用强制类型转换的时候可能会造成精度缺失问题
格式:
val/var 变量名:数据类型 = 具体的值.toXxx //Xxx表示你要转换的数据类型
示例:
val a:Double = 5.21
val b:Int = a.toInt
值类型和String类型之间的相互转换
- 值类型的数据转换成String类型
格式一:
val/var 变量名:String = 值类型数据 + ""
格式二:
val/var 变量名:String = 值类型数据.toString
- String类型的数据转换成其对应的值类型
格式:val/var 变量名:值类型 = 字符串值.toXxx //Xxx表示你要转换到的数据类型
注:
- String类型的数据转成Char类型的数据,方式有点特殊,并不是调用 toChar,而是 toCharArray