scala:数据类型
7个数值类型,1个布尔类型:
Byte、Char、Short、Int、Long、Float、Double和Boolean //这些都是类类型
scala中基本类型和包装类型转换将由虚拟机自动完成
scala> 1.toString()
res6: String = 1
Scala中所有的类都扩展自Any
类,其中Any
类有两个子特质,AnyVal
和AnyRef
。
AnyVal
:上面7个数值类型和1个布尔类型,外加一个Unit
类型,这9个类型都是其子类。
AnyRef
:所有除了上面9个类型的所有其他类型都是其子类(类似Java中的Object
类)。
特殊类型
Unit
类型,唯一实例()
;
Null
类型,唯一实例null
;
Nothing
类型,没有实例。
其中,Nothing
是任何类型的子类。Null
是任何引用类型的子类,但是不是数值类型的子类,如不能把null
赋值给Int
类型的变量。
Unit
相当于void
,其并不是任何类型的超类,但是编译器依然允许任何对象被替换为()
,如下:
object M {
def printAny(n:Any) {println(n)}
def printU(n: Unit) {println(n)}
def main(args: Array[String]){
printAny("hello") //输出hello
printU("hello") //输出(),说明编译器将String类的对象替换为Unit的对象()
}
}