Kotlin面试题更新 2026-08-05

在 Kotlin 语言中,val 与 var 在变量定义上的核心差异是什么?针对这两种关键字,分别说明它们各自最适用的实现场景。

技术原理Kotlin

考察说明

考查 Kotlin 基础语法中可变与不可变引用的区分及实际应用选择。

回答思路

  1. 【回答框架 1】val 声明只读引用,初始化后不能重新赋值;var 声明可变引用,可多次赋值。二者决定的是引用本身能否改变,而非指向对象是否可变。
  2. 【回答框架 2】使用场景上,优先用 val 提升代码安全性与不可变性,减少意外修改;仅当变量确实需要重新赋值时才用 var,例如循环计数器或有状态累积的局部变量。
  3. 【回答框架 3】对于对象内部状态的修改,val 仍允许改变对象属性,因此不可变性与 Java 的 final 语义类似,需结合数据类或集合的只读视图实现完整不可变。
  4. 【回答框架 4】函数参数默认不可变,若需可变可在内部复制或使用局部 var;类属性也尽量用 val 暴露,通过构造器注入或在 init 块中一次性初始化。
  5. 【回答框架 5】在集合与并发场景,val 搭配只读集合更利于线程安全理解,但只读不代表不可变,需明确底层实现差异。
  6. 【关键点 1】val 本质是只读引用,var 是可变引用,均不限制对象内部状态变化。
  7. 【关键点 2】优先采用 val 减少可变状态,var 只在需重新赋值时使用。
  8. 【关键点 3】val 的不可变性通过引用不可重赋值体现,对象内容仍可修改。
  9. 【易错点 1】误以为 val 使对象完全不可变,忽略了对象属性仍可修改的事实。
  10. 【易错点 2】在循环或需要更新状态的场景错误使用 val 导致编译错误,不意识到应换 var 或重构。
  11. 【易错点 3】混淆 val 引用不可变与集合只读视图的关系,只读视图不一定线程安全。