Scala面试题更新 2026-08-03

在 Scala 编程中,val 与 var 二者有何不同?又应当依据什么标准来决定究竟采用哪一个?

考察说明

考查对 Scala 中不可变与可变变量定义及选用的理解。

回答思路

  1. 【回答框架 1】val 定义的是不可变引用,一旦赋值便不能重新指向其他对象;var 定义的是可变引用,可随时重新赋值。两者在语法上仅有关键字差异,但语义关乎函数式编程的不可变性原则。
  2. 【回答框架 2】选择 val 优先:默认使用 val 能减少状态变更,增强代码可读性与并发安全性,便于推理与测试,也利于编译器优化。仅在确需可变状态时使用 var,例如循环计数、累加器或与外部系统交互的临时变量。
  3. 【回答框架 3】实际工程中,优先 val,必要时使用 var,并限定作用域,避免滥用可变状态。
  4. 【回答框架 4】与 Java 对比:val 类似 final 变量,var 类似普通变量,但 Scala 更强调不可变性。
  5. 【回答框架 5】在集合操作与函数式编程中,val 与不可变集合搭配能获得更好的函数式风格。
  6. 【关键点 1】val 不可重新赋值,var 可重新赋值
  7. 【关键点 2】默认优先使用 val,可提升代码安全与可维护性
  8. 【关键点 3】仅在需要可变状态时才使用 var
  9. 【易错点 1】val 不可变只保证引用不变,不保证指向对象内部状态不可变
  10. 【易错点 2】var 的滥用易引入隐式状态,降低并发安全性