声明值和变量

一个用 val,一个用 var

val 定义的值是不可变的,类似于一个常量

注 : var 和 和 val 关键字只标识引用本身是否可以指向另一个不同的对象,它们并未表明其所引用的对象是否可变。为了减少可变性引起的 bug ,应该尽可能地使用不可变变量。 变量类型可以省略, 解析器会根据值进行推断,val 和 和 var声明变量都要初始化

Scala 中,所有的值都是类对象,而所有的类,包括值类型,都最终继承
自一个统一的根类型 Any。统一类型,是 Scala 的又一大特点。更特别的是,
Scala 中还定义了几个底层类(Bottom Class),比如 Null 和 Nothing。

Scala基础_scala

  1. Null 是所有引用类型的子类型,而 Nothing 是所有类型的子类型。Null 类
    只有一个实例对象,null,类似于 Java 中的 null 引用。null 可以赋值给任
    意引用类型,但是不能赋值给值类型。

  2. Nothing,可以作为没有正常返回值的方法的返回类型,这个方法不会正常返回,而且由于 Nothing 是其他任意类型的子类,他还能跟要求返回值的方法兼容

  3. Unit 类型用来标识过程,也就是没有明确返回值的函数,Unit类似于 Java 里的 void。Unit 只有一个实例,(),这个实例也没有实质的意义

算术和操作符重载

±*/%可以完成和 Java 中相同的工作,但是有一点区别,他们都是方法。你几乎可以用任何符号来为方法命名。

==注 :a Scala 中没有 ++ 、 – 操作符 ,需要通过 += 、- -= ===

调用函数和方法

调用函数

需要引入函数包 import 包名 ._ _ 是通配符 , 等同于 java 中的 *

调用静态方法

Scala 中没有静态方法 , 一般通过单例对象或者伴生对象进行实现

调用对象方法:

对象实例调用方法,对象.方法

apply 、update 方法

apply 方法是调用时可以省略方法名的方法。用于构造和获取元素

“Hello”(4) 等同于 “Hello”.apply(4)
Array(1,2,3)  等同于 Array.apply(1,2,3)

在 StringOps 中你会发现一个 def apply(n: Int): Char 方法定义。
update 方法也是调用时可以省略方法名的方法,用于元素的更新

​ arr(4) = 5 等同于 arr.update(4,5)

option

Scala 为单个值提供了对象的包装器,表示为那种可能存在也可能不存在
的值。他只有两个有效的子类对象,一个是 Some,表示某个值,另外一个是
None,表示为空,通过 Option 的使用,避免了使用 null、空字符串等方式来
表示缺少某个值的做法