diff --git a/README.md b/README.md new file mode 100644 index 0000000..8c8c627 --- /dev/null +++ b/README.md @@ -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` 里 `` 还写着 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 + +私有学习笔记,暂不外发。 diff --git a/src/main/scala/demo3/DemoOps.scala b/src/main/scala/demo3/DemoOps.scala new file mode 100644 index 0000000..6b1c878 --- /dev/null +++ b/src/main/scala/demo3/DemoOps.scala @@ -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 + + + + } + +}