回到目录
项目源码 kotlin-basics 项目
ValVarDemoTest 源码地址
Kotlin 中使用 val 和 var 关键字声明变量.
var 声明一个可变变量, 可以被重新赋值;
@SpringBootTest
class ValVarDemoTest {
@Test fun testVar() {
// 声明一个名为 oneVar 的 var 变量, 并赋值
var oneVar = "codergege"
// 做个断言测试
assertEquals("codergege", oneVar)
// 可以延迟赋值
var anotherVar: String
anotherVar = "kotlin"
assertEquals("kotlin", anotherVar)
// var 变量可以重新赋值
anotherVar = "kotlin kotlin"
assertEquals("kotlin kotlin", anotherVar)
}
}
val 声明一个只读对象, 一旦初始化, 就无法改变它的值了!
val 变量本身的值是不可变的, 但是它的成员变量如果是 var 类型, 仍然可以改变.
可以这么理解, val 变量中存着一个对象的地址, 这个地址值是无法改变的. 该地址指向
堆内存, 内存中存放的内容是可以改变的.
@Test fun testVal() {
// 声明一个名为 oneVal 的 val 变量, 并初始化
val oneVal = "codergege"
assertEquals("codergege", oneVal)
// val 变量也可以延迟初始化!
val anotherVal: String
anotherVal = "kotlin"
assertEquals("kotlin", anotherVal)
// val 一旦初始化, 就不可改变
// anotherVal = "kotlin kotlin" // 编译不通过, 报错了
// 演示内部成员是可变的
val oneArray = intArrayOf(1, 2, 3, 4, 5)
// oneArray = intArrayOf(7, 8, 9) // 编译不通过, 无法改变 val 变量的值
// 但是内部成员是可变的
oneArray[0] = 10
assertEquals(10, oneArray[0])
}