Scala 类型层次结构

Scala 类型层次结构

Scala中没有原始类型(与java不同)。Scala中的所有数据类型都是对象,都有对其数据进行操作的方法。Scala的所有类型都是作为 类型层次结构 的一部分存在的。

我们在Scala中定义的每一个类都会自动属于这个层次结构。

Scala类型层次结构

Any 是所有类的超类,也叫顶类。它定义了某些通用的方法,如 equals、hashCode 和 toString。Any有两个直接的子类。

  • AnyVal
  • AnyRef

例子

// 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, and 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。scala.AnyRef在java编程中对应于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和Null:

Nothing 是所有价值类型的一个子分类,它也被称为底层类型。Nothing类型 即没有价值。我们可以用Nothing来表示非终止的信号,如抛出的异常、程序退出或无限循环。

Null 是所有引用类型的一个子分类。关键字字面null可以识别一个单一的值。提供Null主要是为了与其他JVM语言的互操作性。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程