Scala 数据类型
Scala具有与Java相同的数据类型,具有相同的内存占用和精度。以下是给出Scala中所有可用数据类型的详细信息的表格−
序号 | 数据类型和描述 |
---|---|
1 | Byte 8位有符号值。范围从-128到127 |
2 | Short 16位有符号值。范围从-32768到32767 |
3 | Int 32位有符号值。范围从-2147483648到2147483647 |
4 | Long 64位有符号值。范围从-9223372036854775808到9223372036854775807 |
5 | Float 32位IEEE 754单精度浮点数 |
6 | Double 64位IEEE 754双精度浮点数 |
7 | Char 16位无符号Unicode字符。范围从U+0000到U+FFFF |
8 | String 一系列字符 |
9 | Boolean 可以是true或false |
10 | Unit 对应于没有值 |
11 | Null null或空引用 |
12 | Nothing 任何其他类型的子类型; 包括无值 |
13 | Any 任何类型的超类型; 任何对象都是类型Any |
14 | AnyRef 任何引用类型的超类型 |
上面列出的所有数据类型都是对象。与Java不同,Scala没有原始类型。这意味着您可以在Int、Long等上调用方法。
Scala基本字面量
Scala使用的字面量规则简单直观。本节将解释所有基本的Scala字面量。
整数字面量
整数字面量通常是Int类型,或者在后面跟有L或l后缀时为Long类型。以下是一些整数字面量 –
0
035
21
0xFFFFFFFF
0777L
浮点数字面量
当浮点数字面量后跟浮点类型后缀F或f时,其类型为Float;否则类型为Double。以下是一些浮点数字面量示例:
0.0
1e30f
3.14159f
1.0e100
.1
布尔字面值
布尔字面值 true 和 false 是布尔类型的成员。
符号字面值
符号字面值 ‘x 是表达式的简写形式 scala.Symbol(“x”) 。Symbol是一个案例类,如下所示定义。
package scala
final case class Symbol private (name: String) {
override def toString: String = "'" + name
}
字符字面值
字符字面值是用引号括起来的单个字符。该字符可以是可打印的Unicode字符,也可以由转义序列描述。以下是一些字符字面值的示例−
'a'
'\u0041'
'\n'
'\t'
字符串字面值
字符串字面值是一系列用双引号括起来的字符。这些字符要么是可打印的Unicode字符,要么是通过转义序列描述的。以下是一些字符串字面值的示例 –
"Hello,\nWorld!"
"This string contains a \" character."
多行字符串
多行字符串字面值是一系列用三重引号””” … “””括起来的字符。字符的顺序是任意的,除非最后只包含三个或更多连续的引号字符。
字符不一定是可打印的;换行符或其他控制字符也是允许的。下面是一个多行字符串字面值的示例−
"""the present string
spans three
lines."""
空值
空值的类型为 scala.Null 与每个引用类型兼容。它表示一个引用值,指向一个特殊的“null”对象。
转义序列
字符和字符串字面值中识别以下转义序列。
Escape Sequences | Unicode | Description |
---|---|---|
\b | \u0008 | backspace BS |
\t | \u0009 | horizontal tab HT |
\n | \u000c | formfeed FF |
\f | \u000c | formfeed FF |
\r | \u000d | carriage return CR |
\” | \u0022 | double quote “ |
\’ | \u0027 | single quote . |
\\ | \u005c | backslash \ |
Unicode为0至255之间的字符也可以用八进制逃逸表示,即反斜杠 ‘\’ 后跟最多三个八进制字符的序列。以下是显示一些转义序列字符的示例:
示例
object Test {
def main(args: Array[String]) {
println("Hello\tWorld\n\n" );
}
}
当上述代码被编译和执行时,它产生以下结果−
输出
Hello World