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的基本语法规范(注释、转义字符、输出方式)

相关推荐
木心术15 小时前
在NVIDIA DGX Spark上部署NemoClaw的实际操作方案以及实际应用便利性。
大数据·分布式·spark
KaMeidebaby1 天前
卡梅德生物技术快报|纳米抗体表达:分子生物学实操指南:噬菌体筛选与纳米抗体表达全流程技术拆解
大数据·人工智能·架构·spark·新浪微博
Nefu_lyh1 天前
【Hive】 八、Hive 计算引擎:MapReduce / Tez / Spark 对比与选型
hive·spark·mapreduce
极光代码工作室2 天前
基于数据分析的电影票房预测系统
大数据·python·数据分析·spark·数据可视化
KaMeidebaby3 天前
卡梅德生物技术快报|噬菌体文库构建实验优化及偶联体系实验数据分析
大数据·人工智能·架构·spark·新浪微博
鸿乃江边鸟3 天前
Spark中怎么做Spark canonicalize归一化
大数据·分布式·spark
ACP广源盛139246256735 天前
GSV2221 显示转换芯片@ACP#赋能 RTX Spark 端侧 AI 设备,构建多屏全模态视觉交互新生态
大数据·人工智能·嵌入式硬件·gpt·spark·电脑·音视频
李白的天不白5 天前
确认 Nginx 配置文件是否真的生效
scala
ACP广源盛139246256735 天前
GSV2231 三屏显示扩展芯片@ACP#RTX Spark AI 终端多屏协作专属解决方案
大数据·人工智能·分布式·信息可视化·spark·电脑·音视频
KaMeidebaby6 天前
卡梅德生物技术快报|蛋白定制:ACE 抑制肽原辅料工艺全参数|适配蛋白定制的提取 & 酶解标准化实操手册
大数据·人工智能·架构·spark·新浪微博