本节内容就是摘抄Scala里面的复杂句,里面的内容是一一对应的
2.基本数据类型和操作
5.toString() //产生字符串"5"
"abc".intersect("bcd") //输出"bc"。intersect()方法用来输出两个字符串中都存在的字符。
3.range
scala> 1 to 5
scala> 1 until 5
scala> 1 to 10 by 2
5.读写文件
把数据写入文本文件
import java.io.PrintWriter //这行是Scala解释器执行上面语句后返回的结果
val out = new PrintWriter("output.txt")
for (i <- 1 to 5) out.println(i)
out.close() //注意:必须要执行out.close()语句,才会看到output.txt文件被生成
读取文本文件中的行
import scala.io.Source //这行是Scala解释器执行上面语句后返回的结果
val inputFile = Source.fromFile("output.txt")
val lines = inputFile.getLines //返回的结果是一个迭代器
for (line <- lines) println(line)
1
2
3
4
5
6.条件、循环
条件
val a = if (x>0) 1 else -1
循环
for循环语句格式如下:for (变量<-表达式) 语句块
for (i <- 1 to 5) println(i)
for (i <- 1 to 5 by 2) println(i)
for (i <- 1 to 5; j <- 1 to 3) println(i*j)
7.数据结构
数组
val intValueArr = new Array[Int](3) //声明一个长度为3的整型数组,每个数组元素初始化为0
intValueArr(0) = 12 //给第1个数组元素赋值为12
intValueArr(1) = 45 //给第2个数组元素赋值为45
intValueArr(2) = 33 //给第3个数组元素赋值为33
for (i <- 0 to 2) println(intValueArr(i))
val myStrArr = new Array[String](3) //声明一个长度为3的字符串数组,每个数组元素初始化为null
myStrArr(0) = "BigData"
myStrArr(1) = "Hadoop"
myStrArr(2) = "Spark"
for (i <- 0 to 2) println(myStrArr(i))
实际上,Scala提供了更加简洁的数组声明和初始化方法,如下:
val intValueArr = Array(12,45,33)
val myStrArr = Array("BigData","Hadoop","Spark")
列表
val intList = List(1,2,3)
val intListOther = 0::intList
val intList = 1::2::3::Nil
val intList1 = List(1,2)
val intList2 = List(3,4)
val intList3 = intList1:::intList2
元组(tuple)
元组和列表不同,列表中各个元素必须是相同类型,元组可以包含不同类型的元素。
val tuple = ("BigData",2015,45.0)
println(tuple._2)
2015
集(set)
集就是一种更为方便的列表
1.不可变集
var mySet = Set("Hadoop","Spark")
mySet += "Scala" //向mySet中增加新的元素
2.可变集
import scala.collection.mutable.Set
val myMutableSet = Set("Database","BigData")
myMutableSet += "Cloud Computing"
println(myMutableSet)
//结果为 Set(BigData, Cloud Computing, Database)
映射(Map)
在Scala中,映射(Map)是一系列键值对的集合(类似于字典)
1.不可变映射
val university = Map("XMU" -> "Xiamen University", "THU" -> "Tsinghua University","PKU"->"Peking University")
println(university("XMU")) //获取映射中的值
val xmu = if (university.contains("XMU")) university("XMU") else 0
println(xmu)
//检查映射中是否包含某个值
2.可变的映射
import scala.collection.mutable.Map
val university2 = Map("XMU" -> "Xiamen University", "THU" -> "Tsinghua University","PKU"->"Peking University")
university2("XMU") = "Ximan University" //更新已有元素的值
university2("FZU") = "Fuzhou University" //添加新元素
university2 + = ("TJU"->"Tianjin University") //添加一个新元素
university2 + = ("SDU"->"Shandong University","WHU"->"Wuhan University") //同时添加两个新元素
循环遍历映射
for ((k,v) <- 映射) 语句块
例子:
for ((k,v) <- university) printf("Code is : %s and name is: %s\n",k,v)
for (k<-university.keys) println(k)