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 不同,这里没有原始类型。这意味着您可以对 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

布尔字面量

布尔字面量 truefalse 是 Boolean 类型的成员。

符号字面量

符号字面量 'x 是表达式 scala.Symbol("x") 的简写。Symbol 是一个 case class,定义如下。

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”对象的引用值。

转义序列

在字符和字符串字面量中识别以下转义序列。

转义序列 Unicode 描述
\b \u0008 退格 BS
\t \u0009 水平制表符 HT
\n \u000c 换页 FF
\f \u000c 换页 FF
\r \u000d 回车 CR
\" \u0022 双引号 "
\' \u0027 单引号 .
\\ \u005c 反斜杠 \

Unicode 在 0 到 255 之间的字符也可以用八进制转义表示,即反斜杠 '\' 后跟最多三个八进制字符。以下示例显示了一些转义序列字符:

示例

object Test {
   def main(args: Array[String]) {
      println("Hello\tWorld\n\n" );
   }
} 

当以上代码编译并执行时,会产生以下结果:

输出

Hello   World
广告