feat:
线下课: 1、变量和数据类型 2、运算符 ChatGPT Scala 第 1 课: 变量、类型、条件判断
This commit is contained in:
+39
@@ -0,0 +1,39 @@
|
|||||||
|
target/
|
||||||
|
!.mvn/wrapper/maven-wrapper.jar
|
||||||
|
!**/src/main/**/target/
|
||||||
|
!**/src/test/**/target/
|
||||||
|
.kotlin
|
||||||
|
|
||||||
|
### IntelliJ IDEA ###
|
||||||
|
.idea/modules.xml
|
||||||
|
.idea/jarRepositories.xml
|
||||||
|
.idea/compiler.xml
|
||||||
|
.idea/libraries/
|
||||||
|
*.iws
|
||||||
|
*.iml
|
||||||
|
*.ipr
|
||||||
|
|
||||||
|
### Eclipse ###
|
||||||
|
.apt_generated
|
||||||
|
.classpath
|
||||||
|
.factorypath
|
||||||
|
.project
|
||||||
|
.settings
|
||||||
|
.springBeans
|
||||||
|
.sts4-cache
|
||||||
|
|
||||||
|
### NetBeans ###
|
||||||
|
/nbproject/private/
|
||||||
|
/nbbuild/
|
||||||
|
/dist/
|
||||||
|
/nbdist/
|
||||||
|
/.nb-gradle/
|
||||||
|
build/
|
||||||
|
!**/src/main/**/build/
|
||||||
|
!**/src/test/**/build/
|
||||||
|
|
||||||
|
### VS Code ###
|
||||||
|
.vscode/
|
||||||
|
|
||||||
|
### Mac OS ###
|
||||||
|
.DS_Store
|
||||||
Generated
+10
@@ -0,0 +1,10 @@
|
|||||||
|
# 默认忽略的文件
|
||||||
|
/shelf/
|
||||||
|
/workspace.xml
|
||||||
|
# 基于编辑器的 HTTP 客户端请求
|
||||||
|
/httpRequests/
|
||||||
|
# 已忽略包含查询文件的默认文件夹
|
||||||
|
/queries/
|
||||||
|
# Datasource local storage ignored files
|
||||||
|
/dataSources/
|
||||||
|
/dataSources.local.xml
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
|
<groupId>org.example</groupId>
|
||||||
|
<artifactId>scala_20260908</artifactId>
|
||||||
|
<version>1.0-SNAPSHOT</version>
|
||||||
|
|
||||||
|
<properties>
|
||||||
|
<maven.compiler.source>21</maven.compiler.source>
|
||||||
|
<maven.compiler.target>21</maven.compiler.target>
|
||||||
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
|
</properties>
|
||||||
|
|
||||||
|
</project>
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
package demo1
|
||||||
|
|
||||||
|
object DemoVar {
|
||||||
|
def main(args: Array[String]): Unit = {
|
||||||
|
// 定义一个变量a,因为是用val定义,所以其实是个常量
|
||||||
|
val a = 10
|
||||||
|
// 常量不可以再修改值,所以x = 11会报错
|
||||||
|
// x = 11
|
||||||
|
|
||||||
|
//定义一个变量y,因为用var定义,所以是个真的变量
|
||||||
|
var b = 10
|
||||||
|
b = 11
|
||||||
|
|
||||||
|
println(b)
|
||||||
|
|
||||||
|
println("============================================================")
|
||||||
|
|
||||||
|
case class people(var high: Int, var weight: Int)
|
||||||
|
|
||||||
|
val xiaoMing = new people(170, 110)
|
||||||
|
|
||||||
|
// xiaoMing = new people(173, 110)
|
||||||
|
// ❌ 因为 xiaoMing 是 val,不能让它重新指向另一个对象
|
||||||
|
|
||||||
|
xiaoMing.high = 173
|
||||||
|
|
||||||
|
println(xiaoMing)
|
||||||
|
println(xiaoMing.weight)
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
package demo2
|
||||||
|
|
||||||
|
object DemoStr {
|
||||||
|
def main(args: Array[String]): Unit = {
|
||||||
|
val name: String = "zhangsan"
|
||||||
|
val age: Int = 18
|
||||||
|
|
||||||
|
println(s"name=${name},age=${age}")
|
||||||
|
|
||||||
|
println(name * 3)
|
||||||
|
|
||||||
|
val duohang: String =
|
||||||
|
"""
|
||||||
|
|123
|
||||||
|
|456
|
||||||
|
|789
|
||||||
|
|""".stripMargin
|
||||||
|
println(s"duohang = ${duohang}")
|
||||||
|
|
||||||
|
val s1: String = "hello"
|
||||||
|
val s2: String = new String("hello")
|
||||||
|
|
||||||
|
println(s1 == s2) // true scala中的==其实等于java中的equals
|
||||||
|
println(s1 != s2)
|
||||||
|
println(s1.equals(s2)) //true 其实等于java中的equals其实等于java中的equals
|
||||||
|
println(s1.eq(s2)) // false scala中的eq就是java中的==,比较两个对象的内存地址
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,48 @@
|
|||||||
|
package demo2
|
||||||
|
|
||||||
|
object DemoVar2 {
|
||||||
|
def main(args: Array[String]): Unit = {
|
||||||
|
val a1: Byte = 10
|
||||||
|
val b1: Long = 1234
|
||||||
|
|
||||||
|
println(s"a1的数据类型是 ${a1.getClass.getSimpleName}")
|
||||||
|
println(s"b1的数据类型是 ${b1.getClass.getSimpleName}")
|
||||||
|
|
||||||
|
// 隐式转换 a1自动转成long类型与b1相加
|
||||||
|
val result1 = a1 + b1
|
||||||
|
println(s"result1的数据类型是 ${result1.getClass.getSimpleName}")
|
||||||
|
println(s"result1 = ${result1}")
|
||||||
|
|
||||||
|
val a2: Byte = 10
|
||||||
|
val b2: Int = a2
|
||||||
|
//报错 无法隐式转换(大变小)
|
||||||
|
// val c2:Byte = b2
|
||||||
|
val c2 = b2.toByte
|
||||||
|
|
||||||
|
val b3: Int = 129
|
||||||
|
val c3: Byte = b3.toByte
|
||||||
|
// c3 会等于129吗? 数值区间为 -128 到 127
|
||||||
|
println(s"c3 = ${c3}")
|
||||||
|
|
||||||
|
val a4: Byte = 10
|
||||||
|
val b4: Char = 'b'
|
||||||
|
|
||||||
|
// type mismatch; 虽然编译通过,但是运行报错
|
||||||
|
// val c4: Byte = 64
|
||||||
|
// println(s"c4=${c4}")
|
||||||
|
|
||||||
|
val a5: Int = 97
|
||||||
|
// Char隐式转换为Int
|
||||||
|
println(s"b4+a5 = ${b4 + a5}")
|
||||||
|
val b5: Char = a5.toChar
|
||||||
|
println(s"b5 = ${b5}")
|
||||||
|
|
||||||
|
|
||||||
|
val a6: Int = 10
|
||||||
|
val b6: Float = a6
|
||||||
|
val c6: Int = b6.toInt
|
||||||
|
println(s"b6 = ${b6}")
|
||||||
|
println(s"c6 = ${c6}")
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
package practise1
|
||||||
|
|
||||||
|
object Demo1VarAndVal {
|
||||||
|
def main(args: Array[String]): Unit = {
|
||||||
|
|
||||||
|
//1. val 和 var
|
||||||
|
val name = "Kenneth"
|
||||||
|
// name = "Tom" // ❌ 不允许修改
|
||||||
|
|
||||||
|
var age = 25
|
||||||
|
age = 26 // ✅ 可以修改
|
||||||
|
println(name)
|
||||||
|
println(age)
|
||||||
|
|
||||||
|
println("=================================")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
println("=================================")
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,37 @@
|
|||||||
|
package practise1
|
||||||
|
|
||||||
|
object Demo2Type {
|
||||||
|
def main(args: Array[String]): Unit = {
|
||||||
|
//2. 类型
|
||||||
|
//
|
||||||
|
//Scala 支持自动推断类型:
|
||||||
|
|
||||||
|
val name = "xiaoMing" // String
|
||||||
|
val age = 25 // Int
|
||||||
|
val price = 19.99 // Double
|
||||||
|
val flag = true // Boolean
|
||||||
|
|
||||||
|
// 也可以明确指定:
|
||||||
|
val name2: String = "xiaoMing"
|
||||||
|
val age2: Int = 25
|
||||||
|
val price2: Double = 19.99
|
||||||
|
|
||||||
|
//Scala 和 Java 很像,但 Scala 更倾向于让编译器帮你推断类型。
|
||||||
|
println(name.getClass)
|
||||||
|
println(age.getClass)
|
||||||
|
println(price.getClass)
|
||||||
|
println(flag.getClass)
|
||||||
|
println(name2.getClass)
|
||||||
|
println(age2.getClass)
|
||||||
|
println(price2.getClass)
|
||||||
|
println("===================================")
|
||||||
|
println(name.getBytes().mkString(","))
|
||||||
|
println("===================================")
|
||||||
|
println(age.isInstanceOf[Int])
|
||||||
|
println(age.getClass)
|
||||||
|
println("===================================")
|
||||||
|
println(name.isInstanceOf[String])
|
||||||
|
println(name.getClass)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
package practise1
|
||||||
|
|
||||||
|
object Demo3StringInterpolation {
|
||||||
|
|
||||||
|
// 这是 Scala 很常用的语法:
|
||||||
|
val name = "xiaoMing"
|
||||||
|
val age = 25
|
||||||
|
|
||||||
|
println(s"我的名字是 $name,今年 $age 岁")
|
||||||
|
|
||||||
|
// 表达式需要使用 {}
|
||||||
|
val a = 10
|
||||||
|
val b = 20
|
||||||
|
|
||||||
|
println(s"$a + $b = ${a + b}")
|
||||||
|
}
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
package practise1
|
||||||
|
|
||||||
|
object Demo4If {
|
||||||
|
def main(args: Array[String]): Unit = {
|
||||||
|
|
||||||
|
// Scala 的 if 和 Java 类似
|
||||||
|
val age = 20
|
||||||
|
|
||||||
|
if(age >=18){
|
||||||
|
println("成年人")
|
||||||
|
}else{
|
||||||
|
println("未成年")
|
||||||
|
}
|
||||||
|
|
||||||
|
// 但是 Scala 有一个非常重要的特点:if 本身就是一个表达式,可以返回值
|
||||||
|
|
||||||
|
|
||||||
|
val result = if(age >= 18){
|
||||||
|
"成年人"
|
||||||
|
}else{
|
||||||
|
"未成年人"
|
||||||
|
}
|
||||||
|
|
||||||
|
println(result)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
package practise1
|
||||||
|
|
||||||
|
object Overall {
|
||||||
|
def main(args: Array[String]): Unit = {
|
||||||
|
/*第 1 课综合题
|
||||||
|
|
||||||
|
写一个 Scala 程序:
|
||||||
|
姓名:Tom
|
||||||
|
年龄:22
|
||||||
|
成绩:85
|
||||||
|
|
||||||
|
最终输出:
|
||||||
|
Tom,今年22岁
|
||||||
|
成绩:85
|
||||||
|
评价:良好*/
|
||||||
|
|
||||||
|
val name = "Tom"
|
||||||
|
val age = 22
|
||||||
|
val score = 85
|
||||||
|
|
||||||
|
val evaluate =
|
||||||
|
if (score >= 90 ) "优秀"
|
||||||
|
else if (score >= 80) "良好"
|
||||||
|
else if (score >= 60) "及格"
|
||||||
|
else "不及格"
|
||||||
|
|
||||||
|
println(
|
||||||
|
s"""
|
||||||
|
|${name},今年${age}岁
|
||||||
|
|成绩:${score}
|
||||||
|
|评价:${evaluate}""".stripMargin)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
package practise1
|
||||||
|
|
||||||
|
object Practise1 {
|
||||||
|
def main(args: Array[String]): Unit = {
|
||||||
|
/* 练习 1:基本变量
|
||||||
|
|
||||||
|
创建三个变量:
|
||||||
|
name = "Tom"
|
||||||
|
age = 20
|
||||||
|
salary = 15000.5
|
||||||
|
|
||||||
|
要求:
|
||||||
|
输出:Tom今年20岁,工资是15000.5*/
|
||||||
|
|
||||||
|
val name = "Tom"
|
||||||
|
val age = 20
|
||||||
|
val salary = 15000.5
|
||||||
|
|
||||||
|
println(s"${name}今年${age}岁,工资是${salary}")
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
package practise1
|
||||||
|
|
||||||
|
object Practise2 {
|
||||||
|
def main(args: Array[String]): Unit = {
|
||||||
|
/* 练习 2:判断年龄
|
||||||
|
|
||||||
|
定义:
|
||||||
|
val age = 22
|
||||||
|
|
||||||
|
判断:
|
||||||
|
18岁及以上:成年人
|
||||||
|
18岁以下:未成年人
|
||||||
|
要求使用 if...else。*/
|
||||||
|
|
||||||
|
val age = 22
|
||||||
|
|
||||||
|
if (age >= 18) {
|
||||||
|
print("成年人")
|
||||||
|
} else {
|
||||||
|
println("未成年人")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
package practise1
|
||||||
|
|
||||||
|
object Practise3 {
|
||||||
|
def main(args: Array[String]): Unit = {
|
||||||
|
/* 练习 3:计算两个数
|
||||||
|
|
||||||
|
定义:
|
||||||
|
val a = 10
|
||||||
|
val b = 20
|
||||||
|
|
||||||
|
输出:
|
||||||
|
10 + 20 = 30
|
||||||
|
10 - 20 = -10
|
||||||
|
10 * 20 = 200
|
||||||
|
10 / 20 = 0.5*/
|
||||||
|
|
||||||
|
val a = 10
|
||||||
|
val b = 20
|
||||||
|
|
||||||
|
println(s"${a}+${b} = ${a + b}")
|
||||||
|
println(s"${a}-${b} = ${a - b}")
|
||||||
|
println(s"${a}*${b} = ${a * b}")
|
||||||
|
println(s"${a}/${b} = ${a.toDouble / b}")
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,47 @@
|
|||||||
|
package practise1
|
||||||
|
|
||||||
|
import scala.util.Random
|
||||||
|
|
||||||
|
object Practise4 {
|
||||||
|
def main(args: Array[String]): Unit = {
|
||||||
|
/*练习 4:成绩判断
|
||||||
|
|
||||||
|
定义:
|
||||||
|
val score = 85
|
||||||
|
|
||||||
|
按照下面规则输出:
|
||||||
|
90 ~ 100:优秀
|
||||||
|
80 ~ 89:良好
|
||||||
|
60 ~ 79:及格
|
||||||
|
0 ~ 59:不及格
|
||||||
|
|
||||||
|
例如:
|
||||||
|
score = 85
|
||||||
|
输出:
|
||||||
|
良好*/
|
||||||
|
|
||||||
|
val score = Random.nextInt(51) + 50
|
||||||
|
println(s"score = ${score}")
|
||||||
|
|
||||||
|
if (score >= 90 && score <= 100) {
|
||||||
|
println("优秀")
|
||||||
|
} else if (score >= 80 && score < 90) {
|
||||||
|
println("良好")
|
||||||
|
} else if (score >= 60 && score < 80) {
|
||||||
|
println("及格")
|
||||||
|
} else
|
||||||
|
println("不及格")
|
||||||
|
|
||||||
|
// GPT优化
|
||||||
|
if (score >= 90) {
|
||||||
|
println("优秀")
|
||||||
|
} else if (score >= 80) {
|
||||||
|
println("良好")
|
||||||
|
} else if (score >= 60) {
|
||||||
|
println("及格")
|
||||||
|
} else {
|
||||||
|
println("不及格")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user