一、scala概述
Scala是一门多范式的编程语言,一种类似java的编程语言,设计初衷是实现可伸缩的语言 、并集成面向对象编程和函数式编程的各种特性。
scala与java一样,运行在JVM。
二、scala安装部署
解压、设置环境变量
三、scala文件的编译运行
scalac hello.scala
scala hello
注:
- 比如说要改生产上spark的代码,用这种方式只要修改一个或多个之后,编译scala文件,替换原文件即可。
- scalac 生成的也是class文件
四、定义变量和值
变量var
值val :不可修改,如果修改的话会报错 error:reassginment to val
如何定义?
//完整定义
val/var 名称:类型 = ???
//省略定义
val/var 名称 = ??? //可以不显式的指定变量的类型,scala能够进行类型推导
val 定义 immutable variable 不可变
var 定义 mytable variable 可变
lazy val 定义惰性求值的常量
什么时候用到lazy val?
如果定义的变量在后续的程序可能不会被用到,那么可以定义为lazy val,只有在第一次被使用的时候,才会求值。
五、常用的数据类型
Int/Long/Double/Float
boolean 不建议用,用0跟1 代替
六、类型转换
//强制类型转换
val money = 10.asInstanceOf[Double]
Double = 10.0
//判断类型
val aa = 10,00
aa.isInstanceOf[Double]
Boolean = true
七、scala函数的定义
//参数 //返回值
def 函数名(x:Int,y:String): Unit ={
xxxxx //最后一行代表函数的返回值
}
返回值哪里也可以不写,scala有类型推导
注:
当调用的函数没有入参时,可以直接调用,省略括号(有一种情况除外)
八、条件表达式
- if else
val a = if( x > 10 ) print("aaa") else print("bbb")
- to []
- until [)
- range[)
1 to 10 或 1.to(10)
res4: scala.collection.immutable.Range.Inclusive = Range(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
1 until 10 或 1.until(10)
res0: scala.collection.immutable.Range = Range(1, 2, 3, 4, 5, 6, 7, 8, 9)
Range(1,10)
scala.collection.immutable.R