1、定义变量
val name:String=_
val/var 参数名:参数类型=默认值或初值,一般数据类型可以根据数值推断出,不用指定数据类型,但是一旦使用默认值,一定要指明数据类型。
_(下划线)表示默认值 string类型的默认值为null Int的默认值为0
val name1:String=”xiaoxiao”
var name2:String=xiaoming”
name=”laowang”
其中val、var修饰的变量分别为不可变的、可变的
不可变的变量一旦赋值,就不可以修改,反之,可变的变量可以进行修改。
2、饿汉模式与懒汉模式
不指明数据的模式默认是饿汉模式
lazy关键字修饰的变量为懒汉模式
所谓饿汉模式是指变量在声明定义的时候同时在创建,给予内存空间
懒汉模式是指先声明,直到第一次使用的时候才去创建。
3、scala即是面向对象编程也是函数式编程
一切皆对象
4、基本数据类型
和java 类型有byte short int long double float char boolean
5、三种控制结构
顺序结构就不说了,控制结构if 和java的也是差不多的
那么for循环结构则有些不同了
循环因子的范围例子 1-10表示为1 to 10
1-9 表示为 1 until 10这表示为数学中左闭右开区间
1-9 表示为range(1,10)也是表示为数学中左闭右开区间
其中range(1,10,2)表示的为1,3,5,7,9 其中2 表示的是步长
for(item <- (1 to 10))
{ printIn(item)}
6、定义一个函数
def 函数名(参数:参数类型,参数:参数类型):返回值类型={ 函数操作主体}
其中返回值类型如果可以通过函数操作主体推断出来可以省略函数的返回值类型
如果没有返回值则用unit表示,没有返回值可以省略返回值类型
如果有返回值则返回的是函数操作主体的最后一个变量值
当函数体只有一行语句的时候可以省略{}
7、匿名函数和高阶函数
匿名函数即没有函数名的函数,没有函数名那怎么调用?
一般匿名函数在定义的时候就在使用,匿名函数的定义
语法:(arg1:Type1,……) => {}
val add = (x:Int) => x+1
功能作用:
-》匿名函数中会根据方法体的执行自动判断返回值类型
-》可以将匿名函数赋值给一个变量
-》可以通过匿名函数实现高阶函数
定义:接收其他函数作为参数的函数就是高阶函数
-》函数a的参数是一个函数b,函数a就叫高阶函数
-》spark中大量的使用了高阶函数,集合中
-》RDD:用于读取、处理、输出
举例:
def map(f: (String) ⇒ Int): Array[B]
val ab = Array("1","2","3")
val ac = ab.map(x => x.toInt())
意义:针对某一个动作有不同的方式的时候