文本讨论一下Scala语言基本类型的实现方式
Java基本类型
Java的数据类型大致可以分为两类:基本(Primitive)类型和对象类型。基本类型一共有8种,分别是boolean、byte、short、char、int、long、float、double。为了把基本类型融入OO系统,Java提供了包装类(Wrapper)。包装类在包java.lang里,一共8个,分别与基本类型一一对应,它们是:Boolean、Byte、Short、Character、Integer、Long、Float和Double。Java5引入的自动装箱拆箱(Autoboxing and Unboxing)语法让基本类型和OO系统结合的更自然,但仍然不够完美。
Scala基本类型
Scala在Java的基础上迈出了一大步,从语法层面彻底消灭了Primitive类型。也就是说,一切皆是对象,如下面代码所示:
val x = 1
println(x.toString)
3.to(8).foreach {
i => println(i)
}
和Java的8种基本类型相对应,Scala也定义了8种基本类型,它们是:Boolean、Byte、Short、Char、Int、Long、Float和Double。这8种基本类型都定义在scala包里。有趣的是,这8种基本类型虽然有相应的类定义,但是和其他类还是有区别的:这些类的实例并不是对象,而是直接映射为相应的primitive类型。比如,下面是Int类的部分代码:
package scala
/** `Int`, a 32-bit signed integer (equivalent to Java's `int` primitive type) is a
* subtype of [[scala.AnyVal]]. Instances of `Int` are n