专栏原创出处:github-源笔记文件 (opens new window)github-源码 (opens new window),欢迎 Star,转载请附上原文出处链接和本声明。

Scala 编程语言专栏系列笔记,系统性学习可访问个人复盘笔记-技术博客 Scala 编程语言 (opens new window)

# 类型关系图

关系图

# Any

Any 是所有类型的超类型,也称为顶级类型。
它定义了一些通用的方法如 equals、hashCode 和 toString。Any 有两个直接子类:AnyVal 和 AnyRef。

  val a: Any = 1
  val b: Any = 's'
  val c: Any = 1.0
  val d: Any = null
  val e: Any = None

# AnyVal

AnyVal 代表值类型。
有 9 个预定义的非空的值类型分别是:Double、Float、Long、Int、Short、Byte、Char、Unit 和 Boolean。
Unit 是不带任何意义的值类型,它仅有一个实例可以像这样声明:()。
所有的函数必须有返回,所以说有时候 Unit 也是有用的返回类型。

  val a: AnyVal = 1
  val b: AnyVal = 's'
  val c: AnyVal = 1.0

# AnyRef

AnyRef 代表引用类型。
所有非值类型都被定义为引用类型。在 Scala 中,每个用户自定义的类型都是 AnyRef 的子类型。
如果 Scala 被应用在 Java 的运行环境中,AnyRef 相当于 java.lang.Object。

  val a: AnyRef = None
  case class People(name: String)
  val b: AnyRef = People("zhangsan")

# Nothing

Nothing 是所有类型的子类型,也称为底部类型。没有一个值是 Nothing 类型的。
它的用途之一是给出非正常终止的信号,如抛出异常、程序退出或者一个无限循环 (可以理解为它是一个不对值进行定义的表达式的类型,或者是一个不能正常返回的方法)。

# Null

Null 是所有引用类型的子类型(即 AnyRef 的任意子类型)。
它有一个单例值由关键字 null 所定义。Null 主要是使得 Scala 满足和其他 JVM 语言的互操作性,但是几乎不应该在 Scala 代码中使用。

  val a: AnyRef = null
  val b: Null = null
最后修改时间: 2/17/2020, 4:43:04 AM