第1章 Scala入门
1.1 Scala概述
为什么学习Scala:
Spark框架是用Scala编写的,学习Scala有助于更好地理解和学习Spark。
Scala结合了面向对象和函数式编程的特性,是一种多范式编程语言。
Scala基于JVM,可以与Java无缝交互,兼容Java类库。
Scala发展历史:
由Martin Odersky设计,融合了函数式编程和面向对象编程的特点。
Scala推动了Java语言的发展,例如Java 8中的Lambda表达式和类型推断。
1.2 Scala与Java的关系
Scala运行于JVM上,可以调用Java类库。
Scala的代码会被编译为Java字节码(.class文件)。
Scala比Java更简洁高效,支持更灵活的语法。
1.3 Scala环境搭建
1. 安装JDK 1.8。
2. 下载并解压Scala安装包。
3. 配置环境变量(SCALA_HOME和PATH)。
4. 测试安装:在命令行输入scala,启动Scala交互环境。
1.4 HelloWorld案例
创建IDEA项目,引入Scala框架。
编写第一个Scala程序:
scala
object Hello {
def main(args: Array[String]): Unit = {
println("hello scala")
}
}
1.5 Class和Object说明
Scala是完全面向对象的语言,去掉了static关键字,用object实现类似静态方法的功能。
无返回值的函数返回类型为Unit。
第2章 变量和数据类型
2.1 注释
单行注释://
多行注释:/* */
文档注释:/ */
2.2 变量和常量
变量:用var声明,值可变。
scala
var age: Int = 18
常量:用val声明,值不可变。
scala
val name: String = "Alice"
2.3 标识符命名规范
以字母或下划线开头,后接字母、数字、下划线。
可以用反引号包含关键字作为标识符。
2.4 字符串输出
字符串拼接:+
插值字符串:s"name=$name"
多行字符串:用三个双引号包围,支持换行和格式化。
2.5 数据类型
Scala数据类型分为两大类:
值类型(AnyVal):如Int、Double、Boolean等。
引用类型(AnyRef):如String、List等。
特殊类型:
Unit:表示无返回值,类似Java的void。
Null:所有引用类型的子类。
Nothing:所有类型的子类,用于异常处理。
2.6 类型转换
自动类型转换:低精度向高精度转换。
强制类型转换:用.toInt、.toDouble等方法。
字符串与数值转换:
scala
val num = "123".toInt
val str = 123.toString
第3章 运算符
3.1 算术运算符
+、-、*、/、%。
整数除法会舍弃小数部分。
3.2 关系运算符
==、!=、>、<、>=、<=。
Scala中的==类似于Java的equals,比较值而非引用。
3.3 逻辑运算符
&&(与)、||(或)、!(非)。
3.4 赋值运算符
=、+=、-=、*=、/=等。
Scala没有++和--,用+= 1和-= 1代替。
3.5 位运算符
&、|、^、~、<<、>>、>>>。
3.6 运算符本质
Scala中运算符是方法调用,例如a + b等价于a.+(b)。
第4章 流程控制
4.1 分支控制(if-else)
单分支:
scala
if (age < 18) {
println("童年")
}
多分支:
scala
if (age < 18) {
println("童年")
} else if (age < 30) {
println("青年")
} else {
println("老年")
}
4.2 循环控制
for循环:
scala
for (i <1 to 5) {
println(i)
}
while循环:
scala
var i = 0
while (i < 5) {
println(i)
i += 1
}
循环中断:用Breaks.break()实现。
4.3 模式匹配(match-case)
类似于Java的switch,但更强大:
scala
val result = operator match {
case '+' => a + b
case '-' => a b
case _ => "非法操作符"
}
总结
前四章内容涵盖了Scala的基础语法、数据类型、运算符和流程控制,为后续学习函数式编程和面向对象编程奠定了基础。Scala的简洁性和强大的表达能力使其成为大数据开发的重要工具。