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

空或空引用

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 是布尔类型的成员。

符号文字

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

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."""

空值

null 值是 scala.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