# Scala 數據類型
Scala 與 Java有著相同的數據類型,下表列出了 Scala 支持的數據類型:
| 數據類型 | 描述 |
| --- | --- |
| Byte | 8位有符號補碼整數。數值區間為 -128 到 127 |
| Short | 16位有符號補碼整數。數值區間為 -32768 到 32767 |
| Int | 32位有符號補碼整數。數值區間為 -2147483648 到 2147483647 |
| Long | 64位有符號補碼整數。數值區間為 -9223372036854775808 到 9223372036854775807 |
| Float | 32位IEEE754單精度浮點數 |
| Double | 64位IEEE754單精度浮點數 |
| 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** 等固定的轉義字符。
### 字符串字面量
字符串表示方法是在雙引號中(") 包含一系列字符,如:
```
"Hello,\nWorld!"
"菜鳥教程官網:www.runoob.com"
```
### 多行字符串的表示方法
多行字符串用三個雙引號來表示分隔符,格式為:**""" ... """**。
實例如下:
```
val foo = """菜鳥教程
www.runoob.com
www.w3cschool.cc
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 | \u000c | 換行(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" );
}
}
```
[運行實例 ?](/try/runcode.php?filename=Test&type=scala)
執行以上代碼輸出結果如下所示:
```
$ scalac Test.scala
$ scala Test
Hello World
$
```
- Scala 教程
- Scala 簡介
- Scala 安裝
- Scala 基礎語法
- Scala 數據類型
- Scala 變量
- Scala 訪問修飾符
- Scala 運算符
- Scala IF...ELSE 語句
- Scala 循環
- Scala while 循環
- Scala do...while 循環
- Scala do...while 循環
- Scala break 語句
- Scala 函數
- Scala 函數傳名調用(call-by-name)
- Scala 指定函數參數名
- Scala 函數 - 可變參數
- Scala 遞歸函數
- Scala 高階函數
- Scala 函數嵌套
- Scala 匿名函數
- Scala 偏應用函數
- Scala 函數柯里化(Currying)
- Scala 閉包
- Scala 字符串
- Scala 數組
- Scala Collection
- Scala List(列表)
- Scala Set(集合)
- Scala Map(映射)
- Scala 元組
- Scala Option(選項)
- Scala Iterator(迭代器)
- Scala 類和對象
- Scala Trait(特征)
- Scala 模式匹配
- Scala 正則表達式
- Scala 異常處理
- Scala 提取器(Extractor)
- Scala 文件 I/O