Scala核心编程(一):Scala语言概述与快速入门

一、为什么要学习Scala?

1.1 Scala与Spark的紧密关系

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

📌 核心观点:Spark的兴起,极大地带动了Scala语言的发展!两者相辅相成,Scala为Spark提供了优雅的函数式编程表达能力,而Spark则让Scala在大数据领域大放异彩。

1.2 Scala是什么?

ScalaScalable Language (可扩展语言)的简写,是一门多范式编程语言,融合了:

  • 面向对象编程(OOP):一切皆为对象
  • 函数式编程(FP):支持高阶函数、不可变数据等

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


二、Scala的诞生故事

2.1 创始人背景

Martin Odersky 是编译器及编程语言的狂热爱好者。在长时间的编程实践后,他希望发明一种语言,能够让写程序这样的基础工作变得高效、简单

当他接触到Java语言后,对Java这门可移植、可运行在网络环境、且具备垃圾回收 的语言产生了极大的兴趣,于是决定将函数式编程语言 的特点融合到Java中,由此发明了两种语言:PizzaScala

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的原因:

  1. Scala专用IDE选择有限:相比Java开发工具(NetBeans、Eclipse等),Scala可选工具不多,IDEA是主流选择
  2. 快捷键简洁:IDEA开发Scala的快捷键不是很多,使用相对简单
  3. 混合编程支持 :实际工作中大部分是开发项目,大数据项目不可避免会使用到Java,IDEA可以很好地支持Java和Scala混合编程

4.2 安装与配置

IDEA安装
  • 下载地址:JetBrains官网
  • 安装方式:傻瓜式安装,直接下一步即可
Scala插件安装

默认情况下IDEA不支持Scala开发,需要安装Scala插件:

  1. 打开IDEA → FileSettingsPlugins
  2. 搜索 "Scala" 插件并安装
  3. 重启IDEA

五、Scala快速开发入门

5.1 第一个Scala程序:Hello World

需求说明

开发一个Hello.scala程序,输出 hello,世界!

Windows下开发步骤
  1. 使用文本编辑器(如EditPlus)编写代码
  2. 将Scala代码保存为 Hello.scala 文件(例如放在 d:/scalademo 目录下)
  3. 通过 scalac 命令编译,生成 .class 文件(和javac类似)
  4. 命令行执行 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程序开发注意事项

  1. 文件扩展名 :Scala源文件以 .scala 为扩展名
  2. 执行入口 :Scala程序的执行入口是 main() 函数
  3. 大小写敏感:Scala语言严格区分大小写
  4. 分号规则 :Scala方法由一条条语句构成,每个语句后不需要分号(Scala语言会在每行后自动加分号),这也体现出Scala的简洁性
  5. 同行多语句:如果在同一行有多条语句,除了最后一条语句不需要分号,其它语句需要分号

七、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过程中,为了搞清楚底层机制,需要查看源码:

  1. 查看源码 :选择要查看的方法或类,输入 Ctrl + B
  2. 关联源码:在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 正确的缩进和空白

  1. 使用一次 Tab 操作实现缩进,默认整体向右边移动;使用 Shift + Tab 整体向左移
  2. 使用 Ctrl + Alt + L 进行代码格式化
  3. 运算符两边习惯性各加一个空格,比如:2 + 4 * 5
  4. 一行最长不超过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的基本语法规范(注释、转义字符、输出方式)

相关推荐
曾阿伦7 小时前
Spark2 序列化解析:JavaSerializer vs KryoSerializer
spark
KaMeidebaby11 小时前
卡梅德生物技术快报|适配体筛选技术架构演进:SPARK-seq 高通量平台原理与技术流程解析
大数据·前端·其他·百度·架构·spark·新浪微博
元拓数智1 天前
智能分析落地卡壳?先补好「数据关系+语义治理」这层技术基建
大数据·分布式·ai·spark·数据关系·语义治理
o丁二黄o1 天前
语义版本控制:用Gemini镜像站实现合同条款的深度差异分析与风险追踪
javascript·kotlin·scala
QQ12958455041 天前
FERP50 - Excel以存储过程方式访问数据仓库
数据仓库·spark·excel
旺仔Sec1 天前
Spark 从入门到部署:核心模块解析与 Yarn 模式实战指南
大数据·分布式·spark
weixin_553654483 天前
如何看待 2026 年 Google I/O 大会发布的 Gemini Spark?
大数据·人工智能·分布式·spark
与仪共舞4 天前
罗德与施瓦茨 NRP18S|三路二极管射频功率传感器
scala·数据库架构
您^_^4 天前
专家(二):Claude Code 数据工程实战:dbt + Airflow + Spark 全流程,$0.22 搭完电商分析管道
大数据·分布式·spark·claudecode·claude code全栈