📜  Scala 类型层次结构

📅  最后修改于: 2022-05-13 01:54:48.502000             🧑  作者: Mango

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 语言的互操作性。