一.变量与常量
Scala有两种类型的变量,一种是使用关键字var声明的变量,值是可以改变的;另一种是使用关键字val声明的变量,也叫常量,值是不可变的。
有几个事项注意
(1)Scala中的变量 在声明时必须进行初始化
var myVar:String="HelloWorld" //使用var声明变量myVar
val age:Int=10 //使用val声明常量
(2)声明变量时,我们可以不给出变量的类型,因为在初始化的时候,Scala的类型推断机制能够根据变量初始化的值自动推算出来
上述声明的代码,等同于下列代码
var myVar="HelloWorld"
val age=10
(3)使用关键字var或val声明变量时,后面紧跟的变量名称不能和Scala中的保留字重名,而且变量名可以以字母或下划线开头,且变量名大小写敏感
二.数据类型
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的这些操作符其实是方法。例如,a+ b其实是a. + (b)的简写。
1 scala> val a=1
2 a:Int = 1
3
4 scala> val b=2
5 b:Int = 2
6
7 scala>a+b
8 res0:Int = 3
9
10 scala>a.+(b)
11 res1:Int = 3
12
Scala中没有提供操作符++和-- 如果我们想要实现递增或者递减的效果,可以使用“+ = 1”或“- = 1”这种方式来实现
四.控制语句结构
在Scala中控制语句包括条件分支语句和循环语句
1.条件分支语句
2.循环语句
Scala中的for循环语句在使用上与其他语言有些不同
比如从0循环到9并打印。
1 scala> for (i<- 0 to 9){
2 | print(i+" ")
3 | }
4
5 //打印结果为0 1 2 3 4 5 6 7 8 9
Scala在for循环中还可以通过使用if判断语句过滤一些元素,多个过滤条件用分号隔开,例如,输出0-9范围中大于5的偶数,代码如下:
scala > for (i<-0 to 9; if i%2==0; if i>5){
| println(i+" ")
| }
// 6 8
通过一个案例演示while的用法
1 scala> var x = 1
2 x: Int = 1
3
4 scala> while(x<10){
5 | print(x+" ")
6
7 | x += 2
8
9 |}
//1 3 5 7 9
do ... while循环语句的格式如下,它与while的区别在于前者至少执行一次循环语句
五.方法和函数
Scala的方法是类的一部分,而函数是一个对象可以赋值给一个变量,Scala中可以使用def语句和val语句定义函数,而定义方法只能使用def语句。
1.方法
Scala方法的定义格式如下:
下面定义一个方法add,实现两数相加
Scala的方法调用的格式如下:
2 .函数
Scala中的函数是一个对象,可以赋值给一个变量
Scala函数的定义格式如下:
下面,定义一个函数addInt,实现两数之和,示例如下:
1.方法转换成函数
方法转换成函数的格式如下:
在上述的格式中,方法名m后紧跟一个空格加一个下划线,是为了告诉编译器将方法m转成函数,而不是要调用这个方法。下面,定义一个方法m,实现将方法m转成函数,示例如下。