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 就是操做符

相关文章
相关标签/搜索