Scala有两种类型的变量:
- val 不可变 声明时必须被初始化,初始化后就不能再赋值
- var 可变的 声明的时候需要初始化,初始化后可以被赋值
Scala的数据类型:
和Java不同的是,在Scala中,这些类型都是“类”,并且都是包scala的成员,比如,Int的全名是scala.Int。对于字符串,Scala用java.lang.String类来表示字符串
字面量(literal)我初步理解为变量的值
运算符:
- 算术运算符:加(+)、减(-) 、乘(*) 、除(/) 、余数(%);
- 关系运算符:大于(>)、小于(<)、等于(==)、不等于(!=)、大于等于(>=)、小于等于(<=)
- 逻辑运算符:逻辑与(&&)、逻辑或(||)、逻辑非(!);
- 位运算符:按位与(&)、按位或(|)、按位异或(^)、按位取反(~)等
- 赋值运算符:=及其与其它运算符结合的扩展赋值运算符,例如+=、%=。
注意:在Scala中没有++与--运算符
在Scala中运算符就是方法。如5+3实际是(5).+(3) 是a.方法(b)的形,所以说Scala是一门纯粹的面向对象的语言。
富包装类:
- 对于基本数据类型,除了以上提到的各种操作符外,Scala还提供了许多常用运算的方法,只是这些方法不是在基本类里面定义,还是被封装到一个对应的富包装类中
- 每个基本类型都有一个对应的富包装类,例如Int有一个RichInt类、String有一个RichString类,这些类位于包scala.runtime中
- 当对一个基本数据类型的对象调用其富包装类提供的方法,Scala会自动通过隐式转换将该对象转换为对应的富包装类型,然后再调用相应的方法。例如:3 max 5
感觉就像Java中Integer 类与int的关系一样。Integer 类在对象中包装了一个基本类型 int 的值。Integer 类对象包含一个 int 类型的字段。
Range:
实现类似for循环的功能,Range支持多种数据类型包括Int,Float,Double等
感觉可以类比python中的range
控制台输入输出语句:
- 从控制台读写数据方法:readInt、readDouble、readByte、readShort、readFloat、readLong、readChar readBoolean及readLine,分别对应9种基本数据类型,其中前8种方法没有参数,readLine可以不提供参数,也可以带一个字符串参数的提示
- 所有这些函数都属于对象scala.io.StdIn的方法,使用前必须导入,或者直接用全称进行调用
- print()和println(),可以直接输出字符串或者其它数据类型,其中println在末尾自动换行。
读写文件:
- 写入文件:
Scala需要使用java.io.PrintWriter实现把数据写入到文件,PrintWriter类提供了print 和println两个写方法
- 读取文件:
可以使用Scala.io.Source的getLines方法实现对文件中所有行的读取
异常处理:
与java一样使用try—catch捕获异常