一、为什么要学习Scala?
1.1 Scala与Spark的紧密关系
在大数据领域,Apache Spark 是新一代内存级大数据计算框架,是大数据技术栈中最重要的内容之一。而Spark本身就是使用Scala编写的,因此想要深入理解和高效使用Spark,掌握Scala这门语言是必不可少的。

📌 核心观点:Spark的兴起,极大地带动了Scala语言的发展!两者相辅相成,Scala为Spark提供了优雅的函数式编程表达能力,而Spark则让Scala在大数据领域大放异彩。
1.2 Scala是什么?
Scala 是 Scalable Language (可扩展语言)的简写,是一门多范式编程语言,融合了:
- 面向对象编程(OOP):一切皆为对象
- 函数式编程(FP):支持高阶函数、不可变数据等

Scala由**瑞士联邦理工学院洛桑(EPFL)**的 Martin Odersky 于2001年开始设计。

二、Scala的诞生故事
2.1 创始人背景
Martin Odersky 是编译器及编程语言的狂热爱好者。在长时间的编程实践后,他希望发明一种语言,能够让写程序这样的基础工作变得高效、简单。
当他接触到Java语言后,对Java这门可移植、可运行在网络环境、且具备垃圾回收 的语言产生了极大的兴趣,于是决定将函数式编程语言 的特点融合到Java中,由此发明了两种语言:Pizza 和 Scala。
2.2 Pizza和Scala对Java的深远影响
Pizza和Scala极大地推动了Java编程语言的发展:
| Java版本 | 引入的新特性 | 来源 |
|---|---|---|
| JDK 5.0 | 泛型、增强for循环、自动类型转换 | 从 Pizza 引入 |
| JDK 8.0 | 类型推断、Lambda表达式 | 从 Scala 引入 |
💡 冷知识 :现在主流JVM的
javac编译器就是Martin Odersky编写的。JDK 5.0和JDK 8.0的编译器都出自他手,可以说Martin Odersky一个人的战斗力抵得上一个Java开发团队!
三、Scala与Java及JVM的关系
3.1 关系分析
一般来说,学Scala的人都会Java,因为Scala是基于Java的。理清三者之间的关系对学习Scala至关重要。

3.2 学习建议
⚠️ 重要建议 :如果没有任何Java基础的同学,建议先学习Java,至少要掌握JavaSE,再学习Scala。因为Scala的语法虽然更简洁,但很多概念(如JVM、类、对象、继承等)与Java一脉相承。
四、Scala开发工具
4.1 为什么选择IntelliJ IDEA?

IDEA 全称 IntelliJ IDEA,是JetBrains公司的产品,总部位于捷克共和国首都布拉格。它在业界被公认为最好的Java开发工具之一。
选择IDEA开发Scala的原因:
- Scala专用IDE选择有限:相比Java开发工具(NetBeans、Eclipse等),Scala可选工具不多,IDEA是主流选择
- 快捷键简洁:IDEA开发Scala的快捷键不是很多,使用相对简单
- 混合编程支持 :实际工作中大部分是开发项目,大数据项目不可避免会使用到Java,IDEA可以很好地支持Java和Scala混合编程
4.2 安装与配置
IDEA安装
- 下载地址:JetBrains官网
- 安装方式:傻瓜式安装,直接下一步即可
Scala插件安装
默认情况下IDEA不支持Scala开发,需要安装Scala插件:
- 打开IDEA →
File→Settings→Plugins - 搜索 "Scala" 插件并安装
- 重启IDEA

五、Scala快速开发入门
5.1 第一个Scala程序:Hello World
需求说明
开发一个Hello.scala程序,输出 hello,世界!
Windows下开发步骤
- 使用文本编辑器(如EditPlus)编写代码
- 将Scala代码保存为
Hello.scala文件(例如放在d:/scalademo目录下) - 通过
scalac命令编译,生成.class文件(和javac类似) - 命令行执行
scala Hello运行程序
bash
# 编译
scalac Hello.scala
# 运行
scala Hello
# 或者直接一步执行(内部也会编译+运行,但速度较慢)
scala Hello.scala
Linux下开发步骤
bash
# 使用vim创建文件
vim Hello.scala
# 编译
scalac Hello.scala
# 运行
scala Hello
示例代码
scala
object Hello {
def main(args: Array[String]): Unit = {
println("hello,世界!")
}
}
5.2 使用IDEA开发
在实际开发中,使用文本工具可以很好地理解运行原理,但不利于开发综合项目。因此推荐使用IDEA进行开发。
课堂练习 :使用IDEA开发一个Hi.scala程序,输出 hello,scala!
- 包名:
com.atguigu.chapter01 - object名称:
Hi
scala
package com.atguigu.chapter01
object Hi {
def main(args: Array[String]): Unit = {
println("hello,scala!")
}
}
5.3 Scala执行流程分析
方式一:编译 + 运行(推荐)
┌─────────────┐ scalac ┌──────────────┐ scala ┌─────────┐
│ .scala文件 │ ──────────▶ │ 字节码文件 │ ──────────▶ │ 结果 │
│ (源文件) │ 编译 │ (.class) │ 运行 │ │
└─────────────┘ └──────────────┘ └─────────┘
方式二:一步执行
┌─────────────┐ scala ┌─────────┐
│ .scala文件 │ ──────────▶ │ 结果 │
│ (源文件) │ 编译运行一步 │ │
└─────────────┘ └─────────┘
⚠️ 注意:方式二虽然方便,但速度较慢,因为每次都会重新编译。
六、Scala程序开发注意事项
- 文件扩展名 :Scala源文件以
.scala为扩展名 - 执行入口 :Scala程序的执行入口是
main()函数 - 大小写敏感:Scala语言严格区分大小写
- 分号规则 :Scala方法由一条条语句构成,每个语句后不需要分号(Scala语言会在每行后自动加分号),这也体现出Scala的简洁性
- 同行多语句:如果在同一行有多条语句,除了最后一条语句不需要分号,其它语句需要分号
七、Scala常用转义字符
| 转义字符 | 含义 | 示例 |
|---|---|---|
\t |
制表位,实现对齐 | println("姓名\t年龄") |
\n |
换行符 | println("Hello\nWorld") |
\\ |
一个 \ |
println("C:\\Users\\Desktop") |
\" |
一个 " |
println("他说:\"你好\"") |
\r |
回车 | println("hello\rworld") |
课后练习
使用一句输出语句,达到如下效果:
姓名 年龄 籍贯 住址
john 12 河北 北京
答案:
scala
println("姓名\t年龄\t籍贯\t住址\njohn\t12\t河北\t北京")
八、Scala语言输出的三种方式
scala
val name = "ApacheCN"
val age = 1
val url = "www.atguigu.com"
// 方式一:字符串拼接(类似Java)
println("name=" + name + " age=" + age + " url=" + url)
// 方式二:printf用法(类似C语言)
printf("name=%s, age=%d, url=%s \n", name, age, url)
// 方式三:字符串插值(类似PHP,推荐)
println(s"name=$name, age=$age, url=$url")
💡 推荐使用方式三 :
s"...$变量..."是Scala中最优雅的字符串插值方式,代码更简洁易读。
九、Scala源码查看
在使用Scala过程中,为了搞清楚底层机制,需要查看源码:
- 查看源码 :选择要查看的方法或类,输入
Ctrl + B - 关联源码:在IDEA中配置Scala SDK时关联源码包
十、Scala中的注释
10.1 注释的重要性
注释用于注解说明解释程序,提高了代码的阅读性。注释是一个程序员必须具有的良好编程习惯。将自己的思想通过注释先整理出来,再用代码去体现。
10.2 三种注释类型
1. 单行注释
scala
// 这是单行注释
val x = 10 // 变量x赋值为10
2. 多行注释
scala
/*
* 这是多行注释
* 可以写多行
*/
val y = 20
3. 文档注释(scaladoc)
注释内容可以被工具 scaladoc 所解析,生成一套以网页文件形式体现的程序说明文档。
scala
/**
* @deprecated xxx
* @example testing coding
* @param args 命令行参数
*/
object Hello {
def main(args: Array[String]): Unit = {
println("hello")
}
}
生成文档命令:
bash
scaladoc -d d:/ Hello.scala
十一、规范的代码风格
11.1 正确的缩进和空白
- 使用一次
Tab操作实现缩进,默认整体向右边移动;使用Shift + Tab整体向左移 - 使用
Ctrl + Alt + L进行代码格式化 - 运算符两边习惯性各加一个空格,比如:
2 + 4 * 5 - 一行最长不超过80个字符,超过请使用换行展示,尽量保持格式优雅
十二、本章知识回顾
12.1 Scala语言的SDK是什么?
Scala SDK即Scala开发工具包,包含编译器(scalac)、运行时环境等。
12.2 Scala环境变量配置
SCALA_HOME = d:\program
Path = %SCALA_HOME%\bin
12.3 Scala程序的编写、编译、运行步骤
| 步骤 | 说明 | 命令 |
|---|---|---|
| 编写 | 使用工具开发Scala程序 | - |
| 编译 | 将 .scala 文件编译成 .class |
scalac Hello.scala |
| 运行 | 使用scala将 .class 加载到JVM并运行 |
scala Hello |
可以直接运行 .scala 文件:scala Hello.scala(但速度较慢)
12.4 Scala程序编写规则
- 基本上规范和Java类似
- 语句后面不需要加分号(Scala会自动添加)
总结
本章我们了解了:
✅ Scala的诞生背景和与Spark的关系
✅ Scala与Java、JVM的紧密联系
✅ Scala开发环境的搭建(IDEA + Scala插件)
✅ 第一个Scala程序的开发与运行
✅ Scala的基本语法规范(注释、转义字符、输出方式)