> 文档中心 > Scala的基本语法

Scala的基本语法


Scala基本语法

Scala基本语法

    • Scala基本语法
  • 一、声明值和变量
  • 二、数据类型
    • 1.Scala数据类型的层次结构:
  • 三、算术和操作符重载
  • 四、控制结构语句
    • 4.1 条件分支语句
      • (1)if语句
      • (2)if…else语句:
      • (3)if…else if…else语句:
      • (4)if…else嵌套语句
    • 4.2 循环语句
      • (1)for循环语句
      • (2)while循环语句
      • (3)do…while循环语句
  • 五、方法和函数
    • 5.1 方法
    • 5.2 函数
    • 5.3 方法转换成函数
  • 总结

一、声明值和变量

1.Scala有两种类型的变量:
1.1 使用关键字var声明的变量,值是可变的;
1.2 使用关键字val声明的变量,也叫常量,值是不可变的
【使用val声明的变量,在第一次初始化的值之后就不可对此值进行修改】

注:以下示例代码在CMD中的Scala运行
示例代码:
Scala的基本语法
myVar:名称
String:类型
【=】后面进行赋值

注意:
(1)Scala中的变量在声明的时候必须进行初始化。
使用var声明的变量可以在初始化后再次对变量进行赋值
使用val声明的常量的值不可被再次赋值
(2)声明变量的时候可以不用给出变量的类型,初始化的时候Scala的类型推断机制能够根据变量初始化的值推断出来.
【可简化代码,使代码更加清晰明了】

【不用写出变量的类型(简化代码)】示例:
Scala的基本语法
(3)使用关键字var或val声明变量时,后面紧跟的变量名称不能和Scala中的保留字重名【例如定义的名称为val或Int,这样和保留字重名】,且变量名可以以字母或下划线开头,且变量名是严格区分大小写的

二、数据类型

1.Scala数据类型的层次结构:

在这里插入图片描述

Any是所有类型的超类型,也称为顶级类型【所有类型的根类或父类】,它包含两个直接子类:
AnyVal:表示值类型,值类型描述的数据是一个不为空的值,而不是一个对象。预定义了9种类型:Double、Float、Long、Int、Short、Byte、Unit、Char、Boolean。
【其中Unit是一种不代表任何意义的值类型,它的作用类似于Java中的void】
AnyRef:表示引用类型【是所有引用类型的父类】。除值类型外,所有类型都继承自AnyRef。
在Scala数据类型层级结构的底部,还有两个数据类型,分别是Nothing和Null:
Nothing:所有值类型的子类型,也称为底部类型。他常见的用途是发出终止信号,例如抛出异常、退出程序或无限循环
Null:所有引用类型的子类型,它的主要用途是与其他JVM语言互操作,几乎不在Scala代码中使用。

三、算术和操作符重载

Scala中算术操作符(+、-、*、/、%)的作用和Java是一样的,位操作符(&、|、>>、<<)的作用也是一样的。
注意:Scala的这些操作符其实是方法

示例:
Scala的基本语法
注:a.+(b)中的符号+表示的是方法名。
Scala中的方法命名没有Java那么严格,几乎可以使用任何符号为Scala方法命名
与Java中的操作符相比,Scala没有提供操作符++【递增】和–【递减】,如果想实现递增或递减的效果,可以使用【+=1】或【-=1】这两种方式实现

四、控制结构语句

在Scala中,控制结构语句包括条件分支语句循环语句。其中,条件分支语句有if语句、if…else语句、if…else if…else语句以及if…else嵌套语句;循环语句有for循环,while循环和do…while循环

4.1 条件分支语句

(1)if语句

Scala的基本语法

(2)if…else语句:

在这里插入图片描述

(3)if…else if…else语句:

在这里插入图片描述

示例:
在这里插入图片描述

(4)if…else嵌套语句

在这里插入图片描述

4.2 循环语句

注:Scala中的for循环语句和Java中的for循环语句在语法上有较大的区别

(1)for循环语句

Scala的基本语法
代码理解:for(变量<-表达式/数组/集合),将后面表达式/数组/集合的结果的每一个值赋值给变量,每循环一次就赋值一次,然后执行下边的循环语句,直到条件不满足跳出循环体,循环结束

示例:
Scala的基本语法
Scala在for循环语句中可以通过使用if判断语句过滤一些元素,多个过滤条件用分号分隔开

示例:
Scala的基本语法
示例代码理解:在0-9之间,能被2整除且大于5的数才输出

(2)while循环语句

While循环语句和Java中的一样,只要表达式结果为True,循环体就会重复执行
Scala的基本语法
示例:
Scala的基本语法

(3)do…while循环语句

Scala的基本语法
注:do…while循环语句与while语句只要区别是,do…while语句的循环语句至少执行一次

五、方法和函数

Scala和Java一样也有方法和函数,Scala的方法是类的一部分,但是函数比较特殊,Scala中的函数是一个对象,它可以赋值给一个变量,或者将函数这个对象作为一个方法传参,换而言之,在类中定义的函数即是方法。

5.1 方法

在这里插入图片描述
代码理解:【def】:Scala的关键字,且固定不变;【functionName】:方法名;【参数列表】写法:参数名称:参数类型,例【a:Int】,若有多个参数,则用逗号分隔开;【function body】:方法的主体;【return expr】:Scala方法的返回类型,可以是任意合法的Scala数据类型,若无返回值,则返回类型为Unit

示例:
Scala的基本语法
Scala的方法调用:
在这里插入图片描述
示例:【实现两个整数相加求和】【通过“类名.方法名(参数列表)”进行调用】
注:【:paste进入多行输入模式,且ctrl-D完成退出】
在这里插入图片描述

5.2 函数

在Scala中,使用def语句定义以及调用函数的格式均与方法一样。Scala函数与Scala方法有所区别,可以使用val语句定义函数的格式。且函数必须要有参数列表,而方法可以没有参数列表。

Scala的函数是一个对象,可以赋值给一个变量
Scala的基本语法
示例:【实现两个整数相加求和】
Scala的基本语法

5.3 方法转换成函数

Scala的基本语法
代码理解:方法名m后面紧跟一个空格和下划线,是为了告知编译器将方法m转换成函数,而不是要调用这个方法

示例:
在这里插入图片描述
【注意:Scala方法的返回值类型可以不写,编译器可以自动推断出来,但是对于递归函数来说,必须要指定返回类型】


总结

以上就是今天要讲的内容,本文仅仅简单介绍了Scala的基本语法,而若想需要深入学习,可配合一些网络资源进行学习,同时需要在Scala中进行实践练习,加深巩固!