Scala 基礎(3)—— 基礎類型和基礎操做

1. Scala 的一些基礎類型java

Scala 提供了 8 種基礎類型,對應 Java 的 8 種基本數據類型。ide

其中包括:函數

整數類型:Byte, Short, Int, Long, Charspa

浮點類型:Float, Doublescala

布爾類型:Booleancode

與 Java 不一樣,這 8 種數據在 Scala 中均可以當作對象使用。例如, Int 類型定義在 scala.Int 中。對象

這 8 種類型在0 Scala 編譯時,都會轉爲 Java 中對應的基本類型,因此基本不會有額外的開銷。blog

 

加上經常使用的字符串類型 String (直接使用 java.lang.String),構成了在 Scala 中最經常使用的基礎類型。字符串

 

 

2. 字面量編譯

 

字面量是在代碼中能夠直接寫入常量的一種方式。包括:

2.1 整數字面量

  • Int, Long, Short, Byte 四種類型
  • 有十進制和十六進制 2 種形式
  • 以 0X 或 0x 開頭,表明十六進制的數,以 0-9a-fA-f 組成

2.2 浮點數字面量

  • Double 或 Float 類型
  • 以 F 或 f 結尾就是 Float 類型,反之是 Double 類型
  • 由十進制數字,小數點(可選),E 或 e(可選,表明指數)組成

2.3 字符字面量

  • Char 類型
  • 由一對單引號,中間任意 Unicode 字符組成
  • 中間的能夠是原字符,也能夠是 Unicode 碼
  • 用反斜槓 \ 轉譯特殊字符,包括:
    • 換行符 \n
    • 退格符 \b
    • 製表符 \t
    • 換頁符 \f
    • 回車符 \r
    • 雙引號 \"
    • 單引號 \'
    • 反斜槓 \\
  • 可使用 Unicode 字符定義變量,固然不推薦這麼作
val B\u0041\u0044 = 1 // 等價於 val BAD = 1

2.4 字符串字面量

  • String 類型
  • 由一對雙引號,中間的字符 Unicode 組成
  • 須要轉譯的字符,規則如字符字面量
  • 可使用一對 """,中間使用原生字符串(即包括全部字符串,換行,須要轉譯的任何字符)
val str = """Welcome
           Type "Help"."""

2.5 符號字面量

  • scala.Symbol 類型
  • 寫法是 'ident,ident 能夠是任何字母和數字組成的標識符
  • 一般用在動態類型語言中用來看成標識符的場合
  • 符號字面量會被內部化,即相同的符號,兩次引用指向同一個 Symbol 對象(相似 Java Integer 對象對於 -128-127 的處理)

2.6 布爾值字面量

  • Boolean 類型
  • false, true

2.7 函數字面量

  • 以後細講

 

 

3. 字符串插值

Scala 提供一種靈活的機制,字符串插值,支持在字符串中嵌入表達式。

3.1 s 插值器

  • s 插值器對內嵌的每一個表達式求值,對求值調用 toString 的方法。
  • 用 $ 符號開始一個表達式
  • 對於單變量,直接在 $ 後面給出變量名,讀到以後第一個非標識符爲止
  • 對於包含非標識符的字符,用 {} 括起來
    val name = "Gerrard"
    val str1 = s"Hello, $name!"
    val str2 = s"The answer is ${2 * 3}"

 

3.2 raw 插值器

  • 不識別轉譯字符
  • 其他功能同 s 插值器
    val str1 = raw"\\\\"  // 打印結果是四個\

3.3 f 插值器

  • 支持 printf 風格的指令(彷佛是 C語言的風格?)
  • 指令放在表達式以後,以 % 開始
    val str1 = f"${math.Pi}%.5f" // 輸出結果 3.14159

 

 

4. 操做符

Scala 中定義了一系列的操做符(與 Java 相似,不細講):

  • 算數操做符:加(+) 減(-) 乘(*) 除(/) 取餘(%)
  • 關係操做符:大於(>) 小於(<) 大於等於(>=) 小於等於(<=) 一元取反(!)
  • 邏輯運算符:邏輯與(& 和 &&) 邏輯或(| 和 ||)
  • 位運算符:按位與(&) 按位或(|) 按位異或(^) 一元的位反碼(~) 左移(<<) 右移(>>) 無符號右移(>>>)

 

 

5. 操做符即方法

在 Scala 中,任何操做符都是方法,例如:

    val sum = 1 + 2

其本質只是在 Int 類型中定義了一個名爲 + 的方法,這個方法接收一個 Int 型的參數

它等價於

    val sum = 1.+(2)

 

反之,任何操做符也能夠當作方法使用

    val s = "Hello World!"
    s.indexOf("o")
    s indexOf "o"

上面兩個調用是等價的

當 s.indexOf("o"),indexOf 就是方法

當 s indexOf "o",indexOf 就是操做符

相關文章
相關標籤/搜索