val 和 var

回到目录
项目源码 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])
    }

回到目录

你可能感兴趣的:(val 和 var)