Scala 入门-统一类型

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

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

类型关系图

关系图

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
发布了224 篇原创文章 · 获赞 54 · 访问量 37万+

猜你喜欢

转载自blog.csdn.net/u011278496/article/details/103883657