Scala是学习Spark的基础。比java更面向对象。
Scala基于Java的,其编译都依赖于JVM,使得Scala也能够跨平台运行。
Scala的SDK拥有Java的部分类库,以及自己的特有类库,和一些Java的封装类库。
1.下载Scala并配置环境变量。
2.创建Maven新工程,增加Scala支持。
即可开始书写Scala代码。
Scala大部分性质与Java类似
一、基础
由于已经学习过Java基础,相似部分无需过多介绍。
1.1定义变量(类型可省略,编译器会推导)
var 变量 [:类型] = 初始值
val 常量 [:类型] = 初始值
1.2标识符(基本同Java)
1.3输出字符串(前两种与Java一样,只总结特别的用法(便于写sql?))
var s =
"""
|Select
| name ,dept
| from emp
| where *****
|""".stripMargin //默认以|为连接符
1.4键盘输入(类似Algs4(橘皮算法4)里的标准输入)
var a = StdIn.readLine()
var b = StdIn.readShort()
var c = StdIn.readDouble()
2.数据类型
Scala中一切数据都是对象,包括后文的函数,都是对象,都是Any的子类
其中数据类型分为AnyVal(数值)和AnyRef(引用)两大子类
Unit是一个数据类型,对应void 但是Unit的对象是() 而void在java只是关键字
Null也是一个类型,只有一个对象null
Nothing是所有数据类型的子类,用在一个函数没有明确返回值时使用。
对于Scala的数值类型的自动转换
(1)自动提升原则:有多种类型的数据混合运算时,系统首先自动将所有数据转换成 精度大的那种数据类型,然后再进行计算。
(2)把精度大的数值类型赋值给精度小的数值类型时,就会报错,反之就会进行自动 类型转换。
(3)(byte,short)和 char 之间不会相互自动转换。
(4)byte,short,char 他们三者可以计算,在计算时首先转换为 int 类型。
3.Scala中的流程控制
if-else 需注意的是,由于定义函数的方式问题,实际上,if-else是可以有返回值的。返回值会取决于最后一行内容。
用if-else可以实现Java中的三元运算符