Scala 數(shù)據(jù)類型

Scala 與 Java有著相同的數(shù)據(jù)類型,下表列出了 Scala 支持的數(shù)據(jù)類型:

數(shù)據(jù)類型 描述
Byte 8位有符號(hào)補(bǔ)碼整數(shù)。數(shù)值區(qū)間為 -128 到 127
Short 16位有符號(hào)補(bǔ)碼整數(shù)。數(shù)值區(qū)間為 -32768 到 32767
Int 32位有符號(hào)補(bǔ)碼整數(shù)。數(shù)值區(qū)間為 -2147483648 到 2147483647
Long 64位有符號(hào)補(bǔ)碼整數(shù)。數(shù)值區(qū)間為 -9223372036854775808 到 9223372036854775807
Float 32位IEEE754單精度浮點(diǎn)數(shù)
Double 64位IEEE754單精度浮點(diǎn)數(shù)
Char 16位無(wú)符號(hào)Unicode字符, 區(qū)間值為 U+0000 到 U+FFFF
String 字符序列
Boolean true或false
Unit 表示無(wú)值,和其他語(yǔ)言中void等同。用作不返回任何結(jié)果的方法的結(jié)果類型。Unit只有一個(gè)實(shí)例值,寫成()。
Null null 或空引用
Nothing Nothing類型在Scala的類層級(jí)的最低端;它是任何其他類型的子類型。
Any Any是所有其他類的超類
AnyRef AnyRef類是Scala里所有引用類(reference class)的基類

上表中列出的數(shù)據(jù)類型都是對(duì)象,也就是說(shuō)scala沒有java中的原生類型。在scala是可以對(duì)數(shù)字等基礎(chǔ)類型調(diào)用方法的。


Scala 基礎(chǔ)字面量

Scala 非常簡(jiǎn)單且直觀。接下來(lái)我們會(huì)詳細(xì)介紹 Scala 字面量。

整型字面量

整型字面量用于 Int 類型,如果表示 Long,可以在數(shù)字后面添加 L 或者小寫 l 作為后綴。:

0
035
21 
0xFFFFFFFF 
0777L

浮點(diǎn)型字面量

如果浮點(diǎn)數(shù)后面有f或者F后綴時(shí),表示這是一個(gè)Float類型,否則就是一個(gè)Double類型的。實(shí)例如下:

0.0 
1e30f 
3.14159f 
1.0e100
.1

布爾型字面量

布爾型字面量有 true 和 false。

符號(hào)字面量

符號(hào)字面量被寫成: '<標(biāo)識(shí)符> ,這里 <標(biāo)識(shí)符> 可以是任何字母或數(shù)字的標(biāo)識(shí)(注意:不能以數(shù)字開頭)。這種字面量被映射成預(yù)定義類scala.Symbol的實(shí)例。

如: 符號(hào)字面量 'x 是表達(dá)式 scala.Symbol("x") 的簡(jiǎn)寫,符號(hào)字面量定義如下:

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

字符字面量

在scala中字符類型表示為半角單引號(hào)(')中的字符,如下:

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

其中 \ 表示轉(zhuǎn)移字符,其后可以跟 u0041 數(shù)字或者 \r\n 等固定的轉(zhuǎn)義字符。

字符串字面量

字符串表示方法是在雙引號(hào)中(") 包含一系列字符,如:

"Hello,\nWorld!"
"W3Cschool教程官網(wǎng):www.o2fo.com"

多行字符串的表示方法

多行字符串用三個(gè)雙引號(hào)來(lái)表示分隔符,格式為:""" ... """

實(shí)例如下:

val foo = """W3Cschool教程
www.o2fo.com
www.o2fo.com
www.runnoob.com
以上三個(gè)地址都能訪問(wèn)"""

Null 值

空值是 scala.Null 類型。

Scala.Null和scala.Nothing是用統(tǒng)一的方式處理Scala面向?qū)ο箢愋拖到y(tǒng)的某些"邊界情況"的特殊類型。

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

Scala 轉(zhuǎn)義字符

下表列出了常見的轉(zhuǎn)義字符:

轉(zhuǎn)義字符 Unicode描述
\b \u0008 退格(BS) ,將當(dāng)前位置移到前一列
\t \u0009 水平制表(HT) (跳到下一個(gè)TAB位置)
\n \u000c 換行(LF) ,將當(dāng)前位置移到下一行開頭
\f \u000c 換頁(yè)(FF),將當(dāng)前位置移到下頁(yè)開頭
\r \u000d 回車(CR) ,將當(dāng)前位置移到本行開頭
\" \u0022 代表一個(gè)雙引號(hào)(")字符
\' \u0027 代表一個(gè)單引號(hào)(')字符
\\ \u005c 代表一個(gè)反斜線字符 '\'

0 到 255 間的 Unicode 字符可以用一個(gè)八進(jìn)制轉(zhuǎn)義序列來(lái)表示,即反斜線?\?后跟 最多三個(gè)八進(jìn)制。

在字符或字符串中,反斜線和后面的字符序列不能構(gòu)成一個(gè)合法的轉(zhuǎn)義序列將會(huì)導(dǎo)致 編譯錯(cuò)誤。

以下實(shí)例演示了一些轉(zhuǎn)義字符的使用:

object Test {
   def main(args: Array[String]) {
      println("Hello\tWorld\n\n" );
   }
} 
運(yùn)行實(shí)例 ?

執(zhí)行以上代碼輸出結(jié)果如下所示:

$ scalac Test.scala
$ scala Test
Hello	World


$