线下课:
1、变量和数据类型
2、运算符

ChatGPT Scala 第 1 课:
变量、类型、条件判断
This commit is contained in:
2026-09-09 17:37:34 +08:00
parent f27e286f7e
commit 9fe3fea28c
2 changed files with 123 additions and 0 deletions
+75
View File
@@ -0,0 +1,75 @@
# 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
私有学习笔记,暂不外发。
+48
View File
@@ -0,0 +1,48 @@
package demo3
object DemoOps {
def main(args: Array[String]): Unit = {
// 1.算术运算符
val result1: Int = 10 / 3 //3
println(s"result1 = ${result1}") //不能整除,取整数部分
val result2: Double = 10 / 3
println(s"result2 = ${result2}") // 两个整数做除法,结果也是证书,赋值给result2时,转成double 10/3 = 3 == 3。0
val result3: Double = 10.0 / 3
println(s"result3 = ${result3}") // double除以整形 10.3 / 3 ==> 10.0/3.0 ==> 3.33333
val result4: Int = (+10) + (-3)
println(s"result4 = ${result4}")
// 2.比较运算符
val a1: Int = 10
val b1: Int = 10
println(s"a1==b1 = ${a1 == b1}")
println(s"a1.equals(b1) = ${a1.equals(b1)}")
println(s"a1 != b1 = ${a1 != b1}")
println(s"a1>b1 = ${a1 > b1}")
println(s"a1 >= b1 = ${a1 >= b1}")
// 3.逻辑运算符
val n = 1
println((6 > 5) && (n > 0))
println((6 > 5) && (n < 0))
println((6 > 5) || (n > 0))
println((6 > 5) || (n < 0))
println(!((6 > 5) && (n > 0)))
// 4.赋值运算符
var a = 10
a += 1 // a = a + 1
println(a)
a -= 1
a /= 1
a %= 1
}
}