1.IO操作(更丰富的操作使用JavaIO)
//控制台读取数据
import scala.io.StdIn
val str = StdIn.readLine("输入数据: ")
println(str)
//读文件
import scala.io.Source
val file = "D:/data/spark/core/wc.txt"
val source = Source.fromFile(file) //读取文件
source.getLines().foreach(println) //逐行读取,流操作时指针型的,如果输出后指针会指向文件末尾,此时的source就没有任何内容了
// source.close()
//写文件
import java.io._
val writer = new PrintWriter(new File("test.txt" ))
writer.write(source.mkString)
writer.close()
2.异常处理
try{
val result = 1 / 0
}catch {
case e: ArithmeticException => e.printStackTrace()
case _ => throw new Exception("未知错误")
}finally{
println("必须执行的!")
}
3.访问权限
-
默认: 公共的,对所有可见
-
protected: 对当前类和子类可见
-
protected[package]: 当前类和子类以及他们的伴生对象可见, 在package包及子包可见
-
protected[this]: 当前类和子类可见
-
-
private: 当前类以及伴生对象可见
-
private[package]: 当前类可见,在package包以及子包可见
-
private[this]: 仅当前类可见
-
4.数组
val arr = Array(1 to 5: _ *)
val array = Array.ofDim(3, 3) //构建二维数组
//改
arr(0) = 9
arr.update(0, 10)
//Array的常用方法
val arr2 = Array.concat(arr, Array(1)) //连接数组
Array.copy(arr, 1, Array(), 3, 2) //复制数组
val arr3 = Array.range(0, 10, 3)
println(arr.mkString(","))
5.元组
//创建元组元组可存放不同类型的元素,最大Tuple22
val t1 = (1, "a")
val (x, y) = (1, "a") //本质属于模式匹配
//访问元组
println(t1._1) //访问元组的第一个元素
println(x)