图1 Scala中数据类型的层次结构
从图1中可以看出,Any是所有类型的超类型,也称为顶级类型,它包含两个直接子类,具体如下:
1.AnyVal:表示值类型,值类型描述的数据是一个不为空的值,而不是一个对象。它预定义了9种类型,分别是Double、Float、Long、Int、Short、Byte、Unit、Char和Boolean。其中,Unit是一种不代表任何意义的值类型,它的作用类似Java中的void。
2.AnyRef:表示引用类型。可以认为,除值类型外,所有类型都继承自AnyRef。
在Scala数据类型层级结构的底部,还有两个数据类型,分别是Nothing和Null,具体介绍如下:
1.Nothing:所有类型的子类型,也称为底部类型。它常见的用途是发出终止信号,例如抛出异常、程序退出或无限循环。
2.Null:所有引用类型的子类型,它主要用途是与其他JVM语言互操作,几乎不在Scala代码中使用。