Scala數據類型
Scala的數據類型全部相同於Java中,具有相同的內存占用和精度。以下表是有關可在Scala中所有的數據類型的細節:
數據類型 | 描述 |
---|---|
Byte | 8位有符號值。範圍從-128到127 |
Short | 16位有符號值。範圍從-32768至32767 |
Int | 32 位有符號值。範圍從 -2147483648 to 2147483647 |
Long | 64位有符號值。 從-9223372036854775808到9223372036854775807 |
Float | 32位IEEE754單精度浮點數 |
Double | 64位IEEE754雙精度浮點數 |
Char | 16位無符號Unicode字符。範圍由U+0000至U+FFFF |
String | 字符序列 |
Boolean | 無論是字麵true或false字麵 |
Unit | 對應於冇有值 |
Null | 空或空引用 |
Nothing | 每一個其他類型的子類型; 包括無值 |
Any | Any類型的超類型;任何對象是任何類型 |
AnyRef | 任何引用類型的超類型 |
上麵列出的所有的數據類型是對象。冇有原始的類型,如Java中。這意味著可以調用int,long等上的方法
Scala基本字麵值:
Scala中使用的文字規則是簡單和直觀的。這部分解釋了所有Scala中的基本文字。
整數值
整數文字通常是int類型,或類型龍其次是L或l後綴的時候。下麵是一些整數文字:
0 035 21 0xFFFFFFFF 0777L
浮點型
浮點文字是Float類型後跟一個浮點類型後綴F或f時,否則是Double類型。下麵是一些浮點文字:
0.0 1e30f 3.14159f 1.0e100 .1
布爾類型
布爾字麵值true和false是Boolean類型的成員。
符號字麵值
符號常量'x是簡寫的表達scala.Symbol(“X”)。Symbol是一個類,它的定義如下。
package scala final case class Symbol private (name: String) { override def toString: String = "'" + name }
字符
字符文字是用引號括起來的單個字符。該字符是一個可打印的Unicode字符或轉義序列描述。這裡有一些字符文字:
'a' 'u0041' ' ' ' '
字符串常量
字符串常量是在雙引號中的字符序列。字符或者是可打印Unicode字符或轉義序列描述。下麵是一些字符串:
"Hello, World!" "This string contains a " character."
多行字符串
多行字符串是包含在三重引號“”字符序列“...”“”。字符序列是任意的,不同之處在於它可以包含三個或更多個連續引號字符僅在未尾。
字符未必是可打印;新的一行或其他控製字符也是允許的。這裡是一個多行字符串:
"""the present string
spans three
lines."""
NULL值
null是scala.Null類型一個值,因此這個引用類型兼容。它表示參考值是指一種特殊的“空”的對象。
轉義序列:
以下轉義序列在字符和字符串。
轉義序列 | Unicode | 描述 |
---|---|---|
u0008 | 退格BS | |
u0009 | 水平製表符HT | |
u000c | 換頁FF | |
f | u000c | 換頁FF |
u000d | 回車CR | |
" | u0022 | 雙引用 " |
' | u0027 | 單引用 . |
\ | u005c | 反斜線 |
介於0和255字符使用Unicode也可以通過一個八進製轉義,也就是說,一個反斜杠“”之後的最多三個八進製字符的序列表示。以下為例子來說明一些轉義字符序列:
object Test { def main(args: Array[String]) { println("Hello World " ); } }
當上述代碼被編譯和執行時,它產生了以下結果:
Hello World