1.1 类型支持
Scala 与 Java有着相同的数据类型,下表列出了 Scala 支持的数据类型:
数据类型 | 描述 |
---|---|
Byte | 8 位有符号补码整数。数值区间为 -128 到 127 |
Short | 16 位有符号补码整数。数值区间为 -32768 到 32767 |
Int | 32 位有符号补码整数。数值区间为 -2147483648 到 2147483647 |
Long | 64 位有符号补码整数。数值区间为 -9223372036854775808 到 9223372036854775807 |
Float | 32 位, IEEE 754 标准的单精度浮点数 |
Double | 64 位 IEEE 754 标准的双精度浮点数 |
Char | 16 位无符号 Unicode 字符, 区间值为 U+0000 到 U+FFFF |
String | 字符序列 |
Boolean | true 或 false |
Unit | 表示无值,等同于 Java 中的 void。用作不返回任何结果的方法的结果类型。Unit 只有一个实例值,写成 ()。 |
Null | null 或空引用 |
Nothing | Nothing 类型在 Scala 的类层级的最低端;它是任何其他类型的子类型。 |
Any | Any 是所有其他类的超类 |
AnyRef | AnyRef 类是 Scala 里所有引用类 (reference class) 的基类 |
类层次结构图如下图所示
Any是所有类型的超类型,也称为顶级类型。它定义了某些通用的方法,例如equals
,hashCode
,和toString
。Any
有两个直接子类:AnyVal
和AnyRef
。
AnyVal
代表值类型。有九种预定义的值类型和它们是不可为空:Double,Float,Long,Int,Short,Byte,Char,Unit,和Boolean。Unit
是不包含有意义信息的值类型。恰好有一个实例Unit可以宣布从字面上像这样:()。所有函数都必须返回某些内容,因此有时Unit是有用的返回类型。
AnyRef
代表参考类型。所有非值类型都定义为引用类型。Scala中的每个用户定义类型都是的子类型AnyRef。如果在Java运行时环境的上下文中使用Scala,则AnyRef与相对应java.lang.Object
。
1.2 类型转换
Scala的类型转换和java的类型转换基本相同
For example:
val x: Long = 987654321
val y: Float = x // 9.8765434E8 (note that some precision is lost in this case)
val face: Char = '☺'
val number: Int = face // 9786
下面这些将不会通过编译: