第一章 基础

常用类型

scala中常用类型如下:

  • Byte
  • Char
  • Short
  • Int
  • Long
  • Float
  • Double
  • Booean

这些类型都是类,所以在scala中不需要包装类型,在基本类型和包装类型之间的转换工作是scala编译器的事。

除此之外,还有 Null 类型,指代 null 或者空引用。

Nothing 是所有其它类型的子类型,包括空值。

Any 是其它类型的父类型, AnyRef 是其它引用类型的父类型。

在scala中,我们使用方法而不是强制类型转换,来做数值类型之间的转换。例如:

99.44.toInt         // 99
99.toChar           // 'c'

和Java一样, toString 将任意对象转换成字符串,要将包含了数字的字符串转换成数字,使用 toInt 或者 toDouble

算术和操作符重载

和Java相比,Scala并没有提供 ++-- 操作符,我们需要使用 +=1 或者 -=1

对于常规的 BigIntBigDecimal 对象,我们可以使用常规的方法使用那些数学操作符:

val x:BigInt = 12121212
x*x*x

在java中,我们需要使用 x.multiply(x).multiply(x)

调用函数和方法

相比Java,在scala中使用数学函数更简单,我们不需要从某个类的调用它的静态方法。

import scala.math._
sqrt(2)
pow(2,4)

在使用以scala开头的包时,我们可以省略scala的前缀。例如 import math._ 等价于 import scala.math._

Scala中没有静态方法,但是提供了单例对象。

不带参数的方法通常不使用圆括号,一般来讲,没有参数并不改变当前对象的方法都不带圆括号。

scala中允许使用数字 * 字符串,从而实现复制字符串的功能。

apply方法

在scala中,我们通常使用类似函数调用的语法。例如:

"Hello"(4) // o

你可以将这种用法当作 () 操作符的重载形式,它背后原理是实现一个名为 apply 的方法。所以 "Hello"(4) 相当于以下代码:

"Hello".apply(4)