Scala 數據類型

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 表示無值,和其他語言中void等同。用作不返回任何結果的方法的結果類型。Unit只有一個實例值,寫成()。
Null null 或空引用
Nothing Nothing類型在Scala的類層級的最底端;它是任何其他類型的子類型。
Any Any是所有其他類的超類
AnyRef AnyRef類是Scala裏所有引用類(reference class)的基類

上表中列出的數據類型都是對象,也就是說scala沒有java中的原生類型。在scala是可以對數字等基礎類型調用方法的。

Scala 基礎字面量

Scala 非常簡單且直觀。接下來我們會詳細介紹 Scala 字面量。

整型字面量

整型字面量用於 Int 類型,如果表示 Long,可以在數字後面添加 L 或者小寫 l 作為尾碼。:

0
035
21
0xFFFFFFFF
0777L

浮點型字面量

如果浮點數後面有f或者F尾碼時,表示這是一個Float類型,否則就是一個Double類型的。實例如下:

0.0
1e30f
3.14159f
1.0e100
.1

布爾型字面量

布爾型字面量有 true 和 false。

符號字面量

符號字面量被寫成: '<識別字> ,這裏 <識別字> 可以是任何字母或數字的標識(注意:不能以數字開頭)。這種字面量被映射成預定義類scala.Symbol的實例。

如: 符號字面量 'x 是運算式 scala.Symbol("x") 的簡寫,符號字面量定義如下:

package scala
final case class Symbol private (name: String) {
   override def toString: String = "'" + name
}

字元字面量

在 Scala 字元變數使用單引號 ' 來定義,如下:

'a'
'\u0041'
'\n'
'\t'

其中 \ 表示轉義字元,其後可以跟 u0041 數字或者 \r\n 等固定的轉義字元。

字串字面量

在 Scala 字串字面量使用雙引號 " 來定義,如下:

"Hello,\nWorld!"
"IT研修官網:www.xuhuhu.com"

多行字串的表示方法

多行字串用三個雙引號來表示分隔符號,格式為:""" ... """

實例如下:

val foo = """IT研修
www.xuhuhu.com
www.xuhuhu.com
www.runnoob.com
以上三個地址都能訪問"""

Null 值

空值是 scala.Null 類型。

Scala.Null和scala.Nothing是用統一的方式處理Scala面向對象類型系統的某些"邊界情況"的特殊類型。

Null類是null引用對象的類型,它是每個引用類(繼承自AnyRef的類)的子類。Null不相容值類型。

Scala 轉義字元

下表列出了常見的轉義字元:

轉義字元 Unicode描述
\b \u0008 退格(BS) ,將當前位置移到前一列
\t \u0009 水準製錶(HT) (跳到下一個TAB位置)
\n \u000a 換行(LF) ,將當前位置移到下一行開頭
\f \u000c 換頁(FF),將當前位置移到下頁開頭
\r \u000d 回車(CR) ,將當前位置移到本行開頭
\" \u0022 代表一個雙引號(")字元
\' \u0027 代表一個單引號(')字元
\\ \u005c 代表一個反斜線字元 '\'

0 到 255 間的 Unicode 字元可以用一個八進制轉義序列來表示,即反斜線‟\‟後跟 最多三個八進制。

在字元或字串中,反斜線和後面的字元序列不能構成一個合法的轉義序列將會導致 編譯錯誤。

以下實例演示了一些轉義字元的使用:

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

執行以上代碼輸出結果如下所示:

$ scalac Test.scala
$ scala Test
Hello    World