Scala 类型层次结构
Scala 中没有原始类型(与Java不同)。 Scala 中的所有数据类型都是具有对其数据进行操作的方法的对象。 Scala 的所有类型都作为类型层次结构的一部分存在。
我们在 Scala 中定义的每个类也将自动属于这个层次结构。
Any是所有类的超类,也称为顶级类。它定义了某些通用方法,例如 equals、hashCode 和 toString。 Any 有两个直接子类:
- 任意值
- 任意参考
.
例子:
// Scala program of Scala Type hierarchy
// Creating object
object Geeks
{
// Main method
def main(args: Array[String])
{
val list: List[Any] = List(
false,
66677,
732,
'a',
"abs"
)
list.foreach(element => println(element))
}
}
false
66677
732
a
abs
AnyVal表示值类。所有值类都是预定义的;它们对应于类 Java 语言的原始类型。有九种预定义的值类型,它们不能为空:Double、Float、Long、Int、Short、Byte、Char、Unit 和 Boolean。 Scala 具有可用于定义值和变量的数字(例如,Int 和 Double)和非数字类型(例如,String)。布尔变量只能为真或假。字符字面量用单引号书写。
例子:
// Scala program of Scala Type hierarchy
// Using AnyVal.
// Creating Object
object Geeks
{
// Main method
def main(args: Array[String])
{
val list: List[AnyVal] = List(
333, true, false
)
list.foreach(element => println(element))
}
}
333
true
false
AnyRef代表参考类。所有非值类型都定义为引用类型。用户自定义类默认定义引用类型;即他们总是(间接地)继承scala.AnyRef。 Java编程中的scala.AnyRef对应Java.lang.Object。
例子:
// Scala program of Scala Type hierarchy
// Using AnyRef
// Creating object
object Geeks
{
// Main method
def main(args: Array[String])
{
val list: List[AnyRef] = List(
"GFG", "GEEKSFORGEEKS"
)
list.foreach(element => println(element))
}
}
GFG
GEEKSFORGEEKS
无和空:
Nothing是所有值类型的子类,也称为底部类型。键入没有任何价值的Nothing。我们可以使用 Nothing 来表示未终止,例如抛出异常、程序退出或无限循环。
Null是所有引用类型的子类。关键字字面量null 可以标识单个值。 Null 主要用于与其他 JVM 语言的互操作性。