scala基础知识
概述
静态类型语言(scala/java)、面向对象编程,面向函数式编程、
优点:scala与java可以无缝链接、速度快、简洁优雅、快速融入大数据生态圈(spark)、scala工程师…
静态类型语言:变量的数据类型在程序编译阶段确定。
动态类型语言:变量的数据类型在程序运行阶段确定。
基于JVM(a.scala—>a.class(java)---->JVM)
基本数据类型
Byte、Short、Int、Long、Float、Double、String、Char、Boolean(首字母大写、与java类似)
Byte | 8位有符号补码整数。数值区间为 -128 到 127 |
---|---|
Short | 16位有符号补码整数。数值区间为 -32768 到 32767 |
Int | 32位有符号补码整数。数值区间为 -2147483648 到 2147483647 |
Float | 32 位, IEEE 754标准的单精度浮点数,浮点数后带F/f的就是Float |
Char | 16位, 无符号 |
Double | 64位, 双精度浮点数 |
String | 由Char数组组成 |
Boolean | true 或者 false |
Unit的类型
相当于Java/c/c++中的void,只有唯一值,用空的括号表示()
操作符
算数运算符(+.-.*./)、
关系运算符(>.<.=.!=.>=.<=)、
逻辑运算符(&&.||.!)、
位运算符(&,|,^,~,<<,>>,>>>)
scala关键字
abstract case catch class def
do else extends false final
finally for forSome if implicit
import lazy macro match new
null object override package private
protected return sealed super this
throw trait try true type
val var while with yield
_ : = => <- <: <% >: # @
变量
val 变量名:数据类型 = 初始值
var 变量名:数据类型 = 初始值
1)声明变量时,类型可以省略;
2)类型确定后,不能修改;
3)var修饰的变量可以改变,val修饰的变量不可改变;
lazy关键字
lazy可以延迟初始化字段,加上lazy的字段会在第一次访问的时候初始化,而不是类初始化的时候,lazy非常适合于初始化非常耗时的场景。
表达式 if-else语句、 for、while、do…while、foreach迭代
if…else语句
if (表达式){
语句块1
}
else{
语句块2
}
def myFactor(x:Int):Int = {
| if(x<=1)
| 1 // 注意:Scala的函数中,函数的最后一句话就是函数的返回值
| else
| myFactor(x-1