77 lines
2.8 KiB
Markdown
77 lines
2.8 KiB
Markdown
# scala_20260908
|
||
|
||
Scala 学习笔记工程,记录 2026-09-08 线下课内容。
|
||
|
||
## 课程内容
|
||
|
||
- 变量和数据类型
|
||
- 运算符
|
||
|
||
## 项目结构
|
||
|
||
```
|
||
scala_20260908/
|
||
├── pom.xml # Maven 配置(仅声明 JDK 21,未配置 Scala 插件)
|
||
└── src/main/scala/
|
||
├── Hello.scala # 入口:Hello world
|
||
├── demo1/
|
||
│ └── DemoVar.scala # val vs var
|
||
├── demo2/
|
||
│ ├── DemoStr.scala # 字符串 + s 插值 + == / eq
|
||
│ └── DemoVar2.scala # 数据类型 + 隐式转换 + 强制转换
|
||
├── demo3/
|
||
│ └── DemoOps.scala # 算术 / 比较 / 逻辑 / 赋值运算符
|
||
└── practise1/ # 课堂练习
|
||
├── Demo1VarAndVal.scala # val / var 基础
|
||
├── Demo2Type.scala # 类型推断 vs 显式声明
|
||
├── Demo3StringInterpolation.scala # s 插值
|
||
├── Demo4If.scala # if 表达式
|
||
├── Practise1.scala # 练习:基本变量输出
|
||
├── Practise2.scala # 练习:判断年龄
|
||
├── Practise3.scala # 练习:四则运算
|
||
├── Practise4.scala # 练习:成绩分级
|
||
└── Overall.scala # 综合练习
|
||
```
|
||
|
||
## 环境要求
|
||
|
||
- JDK 8
|
||
- Scala 2.11.12
|
||
- IntelliJ IDEA(推荐,装 Scala 插件即可直接运行)
|
||
- Maven(可选,配合 `pom.xml` 编译)
|
||
|
||
> 注意:当前 `pom.xml` 里 `<maven.compiler.source/target>` 还写着 21,跟实际环境对不上。
|
||
> Scala 2.11.12 也不支持 JDK 9+,需要把 pom.xml 改成 JDK 8 并加上 `scala-maven-plugin`。
|
||
> 否则直接用 IntelliJ 跑 `main` 最省事。
|
||
|
||
## 运行方式
|
||
|
||
### IntelliJ(推荐)
|
||
|
||
1. 用 IDEA 打开本目录
|
||
2. 等待 IDEA 识别为 Scala 项目(首次会提示装 Scala 插件)
|
||
3. 打开任意 `.scala` 文件,右键 `Run 'XXX.main()'`
|
||
|
||
### 命令行(需要先配好 scala-maven-plugin)
|
||
|
||
```bash
|
||
mvn scala:run -DmainClass=Hello
|
||
mvn scala:run -DmainClass=demo1.DemoVar
|
||
mvn scala:run -DmainClass=demo3.DemoOps
|
||
mvn scala:run -DmainClass=practise1.Overall
|
||
```
|
||
|
||
## 重点速记
|
||
|
||
- `val` 定义常量(不能重新赋值),`var` 定义变量。**优先用 `val`**
|
||
- Scala 的 `==` 等价于 Java 的 `equals`(比较内容),`eq` 才等价于 Java 的 `==`(比较地址)
|
||
- `s"..."` 是字符串插值,表达式用 `${...}`
|
||
- `if` 在 Scala 里是**表达式**,可以直接 `val x = if (cond) a else b`
|
||
- 整数除法默认向 0 取整(`10 / 3 == 3`),想要小数至少一边要 `.0`
|
||
- `Byte → Long` 隐式转换合法,`Long → Byte` 必须 `.toByte`,且可能溢出(129 → -127)
|
||
|
||
## License
|
||
|
||
私有学习笔记,暂不外发。
|
||
|