【Spark编程基础(2.2)】Scala语言基础—Scala基础知识

文章目录

2 Scala基础知识

  1. 基本数据类型和变量

基本数据类型:Byte、Char、Short、Int、Long、Float、Double、Boolean。
Int类型->scala.Int类
String类型->java.lang.String
【Spark编程基础(2.2)】Scala语言基础—Scala基础知识
字面量(literal)
【Spark编程基础(2.2)】Scala语言基础—Scala基础知识
【Spark编程基础(2.2)】Scala语言基础—Scala基础知识
操作符优先级:算术运算符>关系运算符>逻辑运算符>赋值运算符
操作符定义成方法:
【Spark编程基础(2.2)】Scala语言基础—Scala基础知识
富包装类:
Int基本类,没有比较复杂的操作,如max,但可以用。因为对应一个富包装类RichInt。

val var 不同类型变量
val 不可变 声明时必须初始化 不能再赋值
var 可变的 声明时需要初始化 可以再赋值
val/var 变量名:数据类型=初始值

类型推断机制
【Spark编程基础(2.2)】Scala语言基础—Scala基础知识
重复使用变量名,会记住最后一次用的类型。
【Spark编程基础(2.2)】Scala语言基础—Scala基础知识
2. 输入输出

控制台输入输出:
【Spark编程基础(2.2)】Scala语言基础—Scala基础知识
都属于scala.io.StdIn,使用前,导入或者使用全称。
【Spark编程基础(2.2)】Scala语言基础—Scala基础知识
控制台输出:print和println,被定义到了scala.Predef,默认导入。
【Spark编程基础(2.2)】Scala语言基础—Scala基础知识
支持C语言风格格式化字符串
【Spark编程基础(2.2)】Scala语言基础—Scala基础知识
插值字符串

【Spark编程基础(2.2)】Scala语言基础—Scala基础知识
读写文件

java.io.PrintWriter

【Spark编程基础(2.2)】Scala语言基础—Scala基础知识
scala.io.Source中的getLines

【Spark编程基础(2.2)】Scala语言基础—Scala基础知识
【Spark编程基础(2.2)】Scala语言基础—Scala基础知识
3. 控制结构
if-else结构
【Spark编程基础(2.2)】Scala语言基础—Scala基础知识
if条件表达式
【Spark编程基础(2.2)】Scala语言基础—Scala基础知识
while循环
【Spark编程基础(2.2)】Scala语言基础—Scala基础知识
for循环
【Spark编程基础(2.2)】Scala语言基础—Scala基础知识
【Spark编程基础(2.2)】Scala语言基础—Scala基础知识
【Spark编程基础(2.2)】Scala语言基础—Scala基础知识
守卫(guard)表达式
【Spark编程基础(2.2)】Scala语言基础—Scala基础知识
支持多个生成器,用分号隔开
【Spark编程基础(2.2)】Scala语言基础—Scala基础知识
for推导式
【Spark编程基础(2.2)】Scala语言基础—Scala基础知识
【Spark编程基础(2.2)】Scala语言基础—Scala基础知识
异常处理-不受检异常
try-catch捕获异常
【Spark编程基础(2.2)】Scala语言基础—Scala基础知识
对循环的控制
scala.util.control的Breaks类breakable和break
【Spark编程基础(2.2)】Scala语言基础—Scala基础知识
【Spark编程基础(2.2)】Scala语言基础—Scala基础知识
【Spark编程基础(2.2)】Scala语言基础—Scala基础知识
4. 数据结构

数组,相同类型数据的集合

【Spark编程基础(2.2)】Scala语言基础—Scala基础知识
【Spark编程基础(2.2)】Scala语言基础—Scala基础知识
【Spark编程基础(2.2)】Scala语言基础—Scala基础知识
【Spark编程基础(2.2)】Scala语言基础—Scala基础知识
【Spark编程基础(2.2)】Scala语言基础—Scala基础知识

元组,对多个不同类型对象的简单封装

【Spark编程基础(2.2)】Scala语言基础—Scala基础知识

容器,collection

scala.collection(可变容器和不可变容器的通用操作)
【Spark编程基础(2.2)】Scala语言基础—Scala基础知识
Traversable特质:抽象方法foreach,遍历当前容器内部的所有元素
Iterable特质
Seq按0,1,2索引;Map按键索引;Set无索引结构。
序列容器:根collection.Set
LinearSeq,取头或取尾巴操作;IndexedSeq,有高效的随机存取操作。
列表和队列继承自LInearSeq;ArrayBuffer和Vector继承自IndexedSeq。

scala.collection.mutable
scala.collection.immutable
List是具体的容器类,共享相同类型的不可变的对象序列。
【Spark编程基础(2.2)】Scala语言基础—Scala基础知识
具有head和tail方法。
构造列表常用方法,在已有列表前面增加元素。
【Spark编程基础(2.2)】Scala语言基础—Scala基础知识
【Spark编程基础(2.2)】Scala语言基础—Scala基础知识
向量
【Spark编程基础(2.2)】Scala语言基础—Scala基础知识
Range,一种特殊的带索引的不可变数字等差序列
【Spark编程基础(2.2)】Scala语言基础—Scala基础知识
【Spark编程基础(2.2)】Scala语言基础—Scala基础知识
【Spark编程基础(2.2)】Scala语言基础—Scala基础知识
【Spark编程基础(2.2)】Scala语言基础—Scala基础知识

序列

集合,不重复元素,哈希

可变类型变量
【Spark编程基础(2.2)】Scala语言基础—Scala基础知识
【Spark编程基础(2.2)】Scala语言基础—Scala基础知识

映射,一系列键值对的容器
可变,scala.collection.mutable.Map
默认不可变,scala.collection.immutable.Map
【Spark编程基础(2.2)】Scala语言基础—Scala基础知识
【Spark编程基础(2.2)】Scala语言基础—Scala基础知识
【Spark编程基础(2.2)】Scala语言基础—Scala基础知识
【Spark编程基础(2.2)】Scala语言基础—Scala基础知识
迭代器