2. 变量与常量
任务说明
本案例演示 Kotlin 中变量与常量的定义方式,覆盖类型推断、显式类型声明以及可变/不可变语义。你将看到一组可直接运行的 Kotlin 代码,并通过输出结果验证不同声明方式的行为差异。
核心实现
// 文件: VariablesAndConstants.kt
// ---------- 变量 (var: 可变) ----------
var count = 10 // 类型推断: Int
var name = "Kotlin" // 类型推断: String
var score = 95.5 // 类型推断: Double
// 显式类型声明
var explicitInt: Int = 42
var explicitLong: Long = 100L
var explicitFloat: Float = 3.14f
var explicitDouble: Double = 2.71828
var explicitBoolean: Boolean = true
var explicitChar: Char = 'A'
var explicitString: String = "Hello"
// 变量可重新赋值
count = 20
name = "Android"
// ---------- 常量 (val: 不可变) ----------
val pi = 3.14159 // 类型推断: Double
val appName: String = "MyApp" // 显式类型
val maxRetries: Int = 3
// 尝试修改 val 会编译错误,下面这行如果取消注释将无法编译
// pi = 3.14 // 错误: val 不能被重新赋值
// ---------- 顶层常量 (编译期常量) ----------
const val COMPILE_TIME_CONST = 100 // 仅支持基本类型和 String
// ---------- 字符串模板演示 ----------
val language = "Kotlin"
val version = 2.0
val description = "课程: $language, 版本: $version"
// ---------- 主函数: 输出验证 ----------
fun main() {
println("=== 变量 (var) ===")
println("count = $count (类型: ${count::class.simpleName})")
println("name = $name (类型: ${name::class.simpleName})")
println("score = $score (类型: ${score::class.simpleName})")
println("\n=== 显式类型声明 ===")
println("explicitInt = $explicitInt (类型: ${explicitInt::class.simpleName})")
println("explicitLong = $explicitLong (类型: ${explicitLong::class.simpleName})")
println("explicitFloat = $explicitFloat (类型: ${explicitFloat::class.simpleName})")
println("explicitDouble = $explicitDouble (类型: ${explicitDouble::class.simpleName})")
println("explicitBoolean = $explicitBoolean (类型: ${explicitBoolean::class.simpleName})")
println("explicitChar = $explicitChar (类型: ${explicitChar::class.simpleName})")
println("explicitString = $explicitString (类型: ${explicitString::class.simpleName})")
println("\n=== 常量 (val) ===")
println("pi = $pi (类型: ${pi::class.simpleName})")
println("appName = $appName (类型: ${appName::class.simpleName})")
println("maxRetries = $maxRetries (类型: ${maxRetries::class.simpleName})")
println("\n=== 编译期常量 ===")
println("COMPILE_TIME_CONST = $COMPILE_TIME_CONST")
println("\n=== 字符串模板 ===")
println(description)
}
运行与验证
运行方式:将上述代码保存为 VariablesAndConstants.kt,在命令行执行:
kotlinc VariablesAndConstants.kt -include-runtime -d app.jar
java -jar app.jar
或在 IntelliJ IDEA 中直接创建 Kotlin 文件并运行 main() 函数。
预期输出:程序将依次打印各变量的当前值及其实际类型。关键验证点包括:
count显示为 20(证明 var 可重新赋值);- 所有显式声明的变量类型与声明一致(如
explicitLong类型为 Long); pi、appName等 val 常量正常输出;- 字符串模板正确拼接
language和version的值。
判定标准:若输出中每个变量的值与类型均与代码声明一致,且程序无编译错误,则案例通过。若尝试取消注释 pi = 3.14 重新编译,编译器应报错,这验证了 val 的不可变性。