Scala语言是纯正的面向对象语言,函数式语言
1.var 和 val
都是用来声明变量的关键字
var 声明的变量是一个可以被重复赋值的变量
val 声明的变量一经赋值就不能再被重复赋值
val 变量名:数据类型=值
或
var 变量名:数据类型=值
由于Scala有类型推断机制,可以省略数据类型
val 变量名=值
或
var 变量名=值
2.数组
一维数组
val 数组名=new Array[数据类型](初始长度)
例如 val arr=new Array[Int](3)
上面就定义了一个长度为3的一维数组,每个元素的类型都是Int
也可以初始化时直接給值
val arr=Array(1,2,3)
二维数组
是通过Array类的ofDim函数实现的
val 数组名=Array.ofDim[数据类型](行数,列数)
3.列表(List)
val list=List("hadoop","spark","hbase")
获取元素
list(元素索引)
例如 list(1) 就会取出 "hadoop"
4.映射(map)
val map=Map("a"->1,"b”->2)
5.元组:不同类型的数据组成的一组数据,与数组不同的是数组中的类型是一致的。
val tuple=("abc",1,1.23)
获取元素tuple._数组元素索引(从1开始)
tuple._1 就是获取第一个元素"abc"
6.容器(Collection)
Scala提供了一套丰富的容器库,包括 列表List,映射Map,集合Set等常用数据结构。
7.序列Sequene
是指元素可以按照特定的顺序访问的容器。
LinearSeq和IndexedSeq。
实现了LinearSeq的有队列Queue和列表List
实现了IndexedSeq的的有序可变数组ArrayBuffer和向量Vector
8.向量
9.Range
是一类特殊的,带索引的不可变数字等差序列。
val r=new Range(start,end,step)
第一个参数 起始数值
第二个是结束数值
第三个步长
例如new Range(1,5,1) 包含的数是1,2,3,4,5
new Range(1,5,2) 包含的数是1,3,5
访问元素可以从0开始 例如 r(0)就是获取第一个元素。
10.集合Set
与List相比是不重复元素
var set =Set("Spark","Hbase") //创建集合
set+="Hadoop" //添加新元素
11.迭代器
输出语句
println
匿名函数:由于有些操作只在一个地方能够被用到,可以采用匿名函数的方式来实现
例如 wordCountRdd.map(word=>(word,1))
其中map的参数 word=>(word,1) 就是一个匿名函数的函数体