【Spark编程基础(2.2)】Scala语言基础—Scala基础知识
文章目录
2 Scala基础知识
- 基本数据类型和变量
基本数据类型:Byte、Char、Short、Int、Long、Float、Double、Boolean。
Int类型->scala.Int类
String类型->java.lang.String
字面量(literal)
操作符优先级:算术运算符>关系运算符>逻辑运算符>赋值运算符
操作符定义成方法:
富包装类:
Int基本类,没有比较复杂的操作,如max,但可以用。因为对应一个富包装类RichInt。
val var 不同类型变量
val 不可变 声明时必须初始化 不能再赋值
var 可变的 声明时需要初始化 可以再赋值
val/var 变量名:数据类型=初始值
类型推断机制
重复使用变量名,会记住最后一次用的类型。
2. 输入输出
控制台输入输出:
都属于scala.io.StdIn,使用前,导入或者使用全称。
控制台输出:print和println,被定义到了scala.Predef,默认导入。
支持C语言风格格式化字符串
插值字符串
读写文件
java.io.PrintWriter
scala.io.Source中的getLines
3. 控制结构
if-else结构
if条件表达式
while循环
for循环
守卫(guard)表达式
支持多个生成器,用分号隔开
for推导式
异常处理-不受检异常
try-catch捕获异常
对循环的控制
scala.util.control的Breaks类breakable和break
4. 数据结构
数组,相同类型数据的集合
元组,对多个不同类型对象的简单封装
容器,collection
scala.collection(可变容器和不可变容器的通用操作)
Traversable特质:抽象方法foreach,遍历当前容器内部的所有元素
Iterable特质
Seq按0,1,2索引;Map按键索引;Set无索引结构。
序列容器:根collection.Set
LinearSeq,取头或取尾巴操作;IndexedSeq,有高效的随机存取操作。
列表和队列继承自LInearSeq;ArrayBuffer和Vector继承自IndexedSeq。
scala.collection.mutable
scala.collection.immutable
List是具体的容器类,共享相同类型的不可变的对象序列。
具有head和tail方法。
构造列表常用方法,在已有列表前面增加元素。
向量
Range,一种特殊的带索引的不可变数字等差序列
序列
集合,不重复元素,哈希
可变类型变量
映射,一系列键值对的容器
可变,scala.collection.mutable.Map
默认不可变,scala.collection.immutable.Map
迭代器