Scala编程 (二) 基本语法
1.声明值和变量
Scala有两种类型的变量:
val
:是不可变的,在声明时就必须被初始化,而且初始化以后就不能再赋值;var
:是可变的,声明的时候需要进行初始化,初始化以后还可以再次对其赋值。
val 声明值
这种变量在声明的时候就必须被初始化,如下是几种初始化的方法
下面方法 由编译器自己推断变量的类型属于字符串
**下面方法 在变量名后先加 冒号
与数据类型
**
可以使用java中的数据类型
这是因为scala在启动的时候 已经自动执行了下面这条命令
我们可以输出一下变量
因为val是声明值,我们可以看到如果想改变它的值就会报错,如下
var 声明变量
下面是var的声明, 格式跟之前一样,只不过前面变成了var
如下,用var声明的变量是可以修改的
小技巧
如果没有敲完一条变量的赋值就不小心点了回车 Scala会在下面的几行里继续让你输入,直到命令结束
2.基本数据类型和操作
Scala中,类型都是类 而且是scala包下的
下表给出了各个值类型的表示范围
字面量
各种类型的字面量定义
这里只要注意 字符串是双引号 字符是单引号
操作符
5
+
3
5 + 3
5+3其实可以写成
(
5
)
.
+
(
3
)
(5).+(3)
(5).+(3)
这里的(5)就是一个对象,它有一个方法是+,3是它的参数
所以就通过对象.方法
来调用
如上述例子就是 (5)对象的加法,参数为3
富包装类
- 对于基本数据类型,除了以上提到的各种操作符外,Scala还提供了许多常用运算的方法,只是这些方法不是在基本类里面定义,还是被封装到一个对应的富包装类中
- 每个基本类型都有一个对应的富包装类,例如Int有一个RichInt类、String有一个RichString类,这些类位于包scala.runtime中
- 当对一个基本数据类型的对象调用其富包装类提供的方法,Scala会自动通过隐式转换将该对象转换为对应的富包装类型,然后再调用相应的方法。
例如:3 max 5
这里的3和5都是Int类,但是Int类没有max这个方法,这里就隐式转化为RichInt类,然后调用max方法来获取最大值
Range
跟python类似
- 在执行for循环时,我们经常会用到数值序列,比如,i的值从1循环到5,这时就可以采用Range来实现
- Range可以支持创建不同数据类型的数值序列,包括Int、Long、Float、Double、Char、BigInt和BigDecimal等
until方法是不包括5的
by说明步长
3.控制台输入输出语句
import scala.io.Stdln
在同一行执行两条语句,用分号进行分割
这里注意到了分开打印的时候外面是没有括号的
插值字符串,这个概念比较新
在输出的字符串前面加个s或者f
s只能控制变量
f还可以控制输出格式
4.读写文件
写文件
读文件
5.异常处理
6.控制结构
if条件表达式
有一点与Java不同的是,Scala中的if表达式的值可以赋值给变量,也就是python里面常用的,非常好理解
while循环
do while 结构
for循环
上图就相当于两层循环.
for推导式
循环的控制
break
continue
数据结构
容器
List 列表
Set 集合
不过现在创建的默认好像就是mutable中的
Map 映射
相当于字典
这里的语句运用到了之前的if表达式的特性
迭代器
grouped和sliding看例子就很好理解
数组 Array
insert是指定位置插入
-=
是删除第一个值一样的元素
+=是在末尾添加
remover是删除指定位置的元素