scala介绍
hadoop(java)
hive(java)
hbase(java)
kafka(scala)
spark(scala)
scala安装
开发工具idea安装与使用
插件:maven,scala
创建maven项目
创建scala代码目录
配置项目
把新建的目录变成source目录
加scala SDK否则就不能创建scala的类
scala版的helloword
idea上maven的使用
清理target
重新编译
修改maven的配置
修改字体
import其他项目
怎么在idea查看源码
修改快捷键
scala语法
val:变量的引用不过变
var:变量的引用可变
scala推荐用val,val就是value的缩写
scala语言结尾不用分号和Python语言比较相似
scala不指定变量类型是会根据值进行自动推断,当然也可以在初始化的时候明确指定变量的类型
scala的值类型有7种:
Byte、Char、Short、Int、Long、Float、Double
与Java相比值类型无引用类型,比如java中int对应的Integer
引用类型有那些比如Integer类型或者自己定义的类
条件表达式:
val x = 3
val y = if(x > 1) 1 else -1
val是不可变变量,但是在赋值之前if(x > 1) 1 else -1语句已经有结果了
混合类型表达式,支持返回多种类型(前提是在不确定类型的情况下,val y:String或val y:Int这样都不行)
val y = if(x > 1) 1 else “hello”
val b = if(x < 1) 1
注意这个后面没有else返回的是AnyVal类型,这个AnyVal是所有类型的基类,就跟Object是Java里面所有类的基类一样
这个语句和 val b = if(x<1) 1 else () 一个意思,这个语句里的()是Unit类型就相当于Java里面的void
else if用法
val c = if(x > 1) 1 else if (x < 1) -1 else 0 这个和java里面一样的
for循环
1 to 10
返回1到10的所有值
1 until 10 等于Range(1,10),和Python里的range一样的用法
返回1到9的所有值,也就是不包括10
for(i <- 1 to 10){
println(i)
}
for(i <- 1 to 10) println(i)
or(i <- 1 until 10) println(i)
for(i <- Range(1,10)) println(i)
结合数组使用
val arr = Array(“a”,”b”,”c”)
for(i <- arr) println(i)
嵌套for循环
for(i <- 1 to 3){
for(j <- 1 to 3){
if(i != j){
println(i + “_” + j)
}
}
}
简便写法
for(i <- 1 to 3;j <- 1 to 3 if(i != j)) println(i + “_” + j)
yield关键字结合for循环使用
val c = for(i <- 1 until 10) yield i
结果会生成一个集合,也就是yield的作用是把每次迭代生成的值封装到一个集合中,当然也可以理解成yield会自动创建一个集合
如果把yield去掉那返回给C的值就为Unit