val 的特性
不可重新赋值:val 变量一旦初始化后,其引用不可更改(但对象内下属性大概可变)。
运行时赋值:val 的值可以在运行时确定(比方通过函数调用或构造函数参数)。
作用域机动:可以声明在类、函数或代码块中。
复制
val name = “Alice” // 直接赋值
val currentTime = System.currentTimeMillis() // 运行时赋值
真正的常量:const val
若需界说 编译时常量,需同时利用 const 和 val,且需满意:
声明在顶层(文件级)或 object/companion object 中。
值必须是根本范例或 String。
值在编译时已知。
复制
// 文件级声明
const val PI = 3.14
class MyClass {
companion object {
const val MAX_COUNT = 100
}
}
3. 核心区别
特性 val const val
赋值机会 运行时 编译时
作用域 恣意位置 顶层或伴生对象
数据范例 恣意范例 根本范例、String
是否可继承覆盖 答应(open val) 克制
利用场景
val:对象内部不可变属性、函数局部变量。
const val:全局设置(如 API 密钥)、数学常数。
示例对比
复制
// 编译时常量
const val API_ENDPOINT = "https://api.example.com"