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])
    }

回到目录

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容