scala基础入门

时间:2021-05-16 13:45:19

1、scala当中申明值和变量

scala当中的变量申明可以使用两种方式,第一种使用val来申明变量。第二种使用var来申明变量。

申明变量语法

val/var 变量名 [:变量类型] = 变量值

其中val定义的变量是不可变的。类似于java当中使用final来进行修饰

REPL自动分配变量名

如果我们在REPL当中没有定义变量名,那么我们的变量名系统会自动给定

scala基础入门

注意:scala当中的变量类型可以不用指定,系统会自动推断。为了减少可变性引起的bug,scala当中推荐尽量使用不可变类型来申明变量。var和val申明变量的时候,变量都必须初始化

2、块表达式

定义变量时用 {} 包含一系列表达式,其中块的最后一个表达式的值就是块的值。

var block1 = {

println("Hello")

val num:Int = 23

val str:String = "world"

num-12

}

println(block1)

块表达式最后的结果,就是我们变量的值

3、scala当中常用数据类型

Scala和Java一样,有7种数值类型Byte、Char、Short、Int、Long、Float、Double类型和1个Boolean类型。

Boolean

true 或者 false

Byte

8位, 有符号

Short

16位, 有符号

Int

32位, 有符号

Long

64位, 有符号

Char

16位, 无符号

Float

32位, 单精度浮点数

Double

64位, 双精度浮点数

String

其实就是由Char数组组成

与java当中不同,scala当中并不区分基本数据类型和引用数据类型,所有的这些类型全部都是对象,可以调用相对应的方法。在scala当中,String直接引用的是java.lang.String这个java当中的类型。由于String在需要时能隐式转换为StringOps,因此不需要任何额外的转换,String就可以使用这些方法。

每一种数据类型都有对应的Rich* 类型,如RichInt、RichChar等,为基本类型提供了更多的有用操作。

4、scala当中的常用类型结构图

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

  1. Null是所有引用类型的子类型,而Nothing是所有类型的子类型。Null类只有一个实例对象,null,类似于Java中的null引用。null可以赋值给任意引用类型,但是不能赋值给值类型。
  2. Nothing,可以作为没有正常返回值的方法的返回类型,非常直观的告诉你这个方法不会正常返回,而且由于Nothing是其他任意类型的子类,他还能跟要求返回值的方法兼容。
  3. Unit类型用来标识过程,也就是没有明确返回值的函数。 由此可见,Unit类似于Java里的void。Unit只有一个实例,(),这个实例也没有实质的意义。

scala基础入门

5、算数操作符重载

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

举例:

scala> 1 + 2

等同于:

scala> 1.+(2)

scala基础入门

注意:Scala中没有++、--操作符,需要通过+=、-=来实现同样的效果。

scala基础入门