feat:
线下课: 1、变量和数据类型 2、运算符 ChatGPT Scala 第 1 课: 变量、类型、条件判断
This commit is contained in:
@@ -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
|
||||||
|
|
||||||
|
私有学习笔记,暂不外发。
|
||||||
@@ -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
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user