以下所有代码都是在scala终端分行键入的
1、Range(创建数值序列)
1 to 3 输出结果 1 2 3 注意:在Scala中“to” “+” 等相当于调用,比如:1+2 相当于 1.+(2) ; 1 to 3 相当于 1.to(3)
1 until 3 输出结果 1 2
1 to 10 by 2 输出 1 3 5 7 9
其他数据类型也可以输出,如:1.3f to 4.5f by 0.3f
2、打印
注意print,println,printf三者的区别
3、读写文件
首先在当前目录下创建空白文件1.txt
写:
import java.io.PrintWriter
val out = new PrintWriter("1.txt")
for(x <- 1 to 10) out.println(x)
out.close()
读:
import scala.io.Source
val in = Source.fromFile("1.txt")
val lines = in.getLines
for(line <- lines) println(line)
4、if-else
与java基本一致
唯一有区别的:可以把if-else整体赋值给一个变量
5、for
for语句中不光可以遍历,也可以直接添加“过滤”,并且可以“多遍历”
添加过滤:
for(i <- 1 to 10 if(i%2 == 0)) println(i) 表示只取出i除以2余0的数据,当然也就是2 4 6 8 10
多遍历:
for(i <- 1 to 10; j <- 1 to 5) println(i * j) 表示i与j的笛卡尔积,当然多遍历中也可以给每个遍历添加过滤
for的推导式:
关键字:yield
简单来讲就是将循环后的数据构建成一个新的集合
val a = for(i <- 1 to 10) yield i + "个"
a.foreach(println) 遍历查看
6、数组
数组的下标获取与Java不同,用的是圆括号()
val arr = new Array[Int](3) 定长为3的int数组
val arr = Array(1, 2, 3) 也可以这样声明
7、列表List
val list = List(1, 2, 3)
list.head 获取头部 结果为 1
list.tail 获取尾部 结果为 2,3
list(1) 根据下标获取元素
还可以进行列表的拼接、合并
val list2 = 0 :: list list2也就是0,1,2,3
注意:这种连接方式是一种右结合,就是说尾部必须是一个列表,哪怕是一个空列表(Nil) 所以声明一个列表:val temp = 1 :: 2 :: Nil
val list3 = list ::: list2 list3也就是1,2,3,0,1,2,3
8、元组
元组不关心元素的数据类型,不同于列表,列表必须保证各个元素数据类型一致。
val tuple = ("a", 1, 2)
tuple._1 结果为:a
9、集Set
包括可变集和不可变集,缺省情况下声明的是不可变集
可变集:
var set1 = Set("a", "b")
set1 += "c" 可执行
不可变集
val set2 = Set("a", "b")
set2 += "c" 报错 如果在头部引入 import scala.collection.mutable.Set 就是可变集了
10、映射Map
包括可变和不可变,缺省情况下声明的是不可变,要想声明可变映射,需要引入 import scala.collection.mutable.Map
val map1 = Map("wh" -> "wuhan", "bj" -> "beijing")
map1("wh") 获取方式
循环遍历
for((k, v) <- map1) 循环遍历键值
for(k <- map1.keys) 循环遍历键
for(v <- map1.values) 循环遍历值
11、迭代器Iterator
while:
val iter1 = Iterator("a", "b")
while(iter1.hasNext){ println(iter1.next())}
for:
val iter2 = Iterator("a", "b")
for(i <- iter2){ println(i)}
12、类
实例化对象new不需要加括号。
定义getter和setter方法分别对应value和value_。
无参构造器和有参构造器分别对应主构造器和辅助构造器。
参考:http://dblab.xmu.edu.cn/blog/952-2/
1