学习任何一门语言,我们先看的就是它的数据类型,Scala也不例外,我们先看看它的数据类型是什么样的。Scala的数据类型首先分成了两大类:AnyVal和AnyRef。AnyVal对应Java中的基本数据类型,AnyRef对应Java中的引用数据类型。AnyVal具体来说又包括了7+2种:7种数值类型,Byte、Short、Int、Long、Float、Double、Char;2种非数值数据类型,Boolean 、Unit。其中的Unit表示空值,相当于Java中的void。AnyRef包括Scala中的class、object以及Trait(特质)。AnyVal和AnyRef还有一个公共的父类,就是Any类型。
了解了Scala中的数据类型,我们再看下Scala中的变量。在前面我们讲Scala的特点曾经提到,Scala中声明变量可以不指明具体数据类型,统一用var或val声明。如:var i=3或val i=3。那么var和val的区别就是,var声明的是变量,值可以再改变。而val声明的相当于常量,值在声明后不可以再改变。所以,声明时采用var还是val,要视具体情况而定了,如果没有特别要求,通常采用val声明。
接下来,我们再看看Scala中的条件表达式。条件语句类似于Java语言,语法格式如下:
但有几点需要注意的是:
1. 条件表达式都是有返回值的,可以赋值给变量。如:
2. 条件表达式的返回值类型由每个分支的最后一个表达式决定。如果每个分支的返回值类型不一致,则采用他们最小的父类作为返回值类型。
上面的条件语句,如果赋值给变量,变量的类型就只能采用String和Int的最小父类,就是Any类型了。
最后,我们再来看看Scala中的循环语句。循环语句有for循环和while/do while循环。使用循环可以方便地遍历数组、集合或元组。
Scala中for循环有很多格式。如下面所示,(假定arr是一个数组):
1)增强for循环
2)使用索引的for循环
3)带守卫的for循环
4)加yield推导式的for循环
此时,会生成一个新的数组,数组的每个元素值比原先大5。
Scala中的while/do while循环,跟Java没太大区别,在此我们就不赘述了。要注意的就是Scala中的循环是没有break或continue语句的,我们需要加条件实现类似的功能。
好了,这次Scala基本语法我们就介绍到这了,希望能帮助您在Scala学习中顺利扬帆起航。