跳转到内容
主菜单
主菜单
移至侧栏
隐藏
导航
首页
最近更改
随机页面
MediaWiki帮助
代码酷
搜索
搜索
中文(中国大陆)
外观
创建账号
登录
个人工具
创建账号
登录
未登录编辑者的页面
了解详情
贡献
讨论
编辑“︁
Kotlin常量
”︁
页面
讨论
大陆简体
阅读
编辑
编辑源代码
查看历史
工具
工具
移至侧栏
隐藏
操作
阅读
编辑
编辑源代码
查看历史
常规
链入页面
相关更改
特殊页面
页面信息
外观
移至侧栏
隐藏
您的更改会在有权核准的用户核准后向读者展示。
警告:
您没有登录。如果您进行任何编辑,您的IP地址会公开展示。如果您
登录
或
创建账号
,您的编辑会以您的用户名署名,此外还有其他益处。
反垃圾检查。
不要
加入这个!
= Kotlin常量 = == 简介 == 在Kotlin中,'''常量'''(Constants)是指在程序运行期间其值不可改变的标识符。Kotlin提供了两种主要方式声明常量: * '''编译时常量'''(使用`const val`) * '''运行时常量'''(使用`val`) 常量用于存储程序中不会改变的值(如数学常数、配置参数等),能提高代码可读性和安全性。 == 编译时常量与运行时常量 == {| class="wikitable" |- ! 特性 !! `const val` !! `val` |- ! 初始化时机 | 编译时 || 运行时 |- ! 作用域 | 顶层或伴生对象 || 任何作用域 |- ! 数据类型限制 | 仅限基本类型和String || 任意类型 |- ! 是否内联 | 是(直接替换为字面量) || 否 |} == 声明语法 == === 编译时常量 === 必须满足以下条件: 1. 声明在顶层或伴生对象中 2. 使用基本类型或String初始化 3. 没有自定义getter <syntaxhighlight lang="kotlin"> // 顶层声明 const val PI = 3.1415926535 const val APP_NAME = "MyKotlinApp" class Constants { companion object { const val MAX_USERS = 1000 } } </syntaxhighlight> === 运行时常量 === 使用`val`关键字声明,在首次访问时初始化: <syntaxhighlight lang="kotlin"> val currentRuntimeVersion = System.getProperty("java.version") class User { val createdAt: LocalDateTime = LocalDateTime.now() } </syntaxhighlight> == 使用场景对比 == <mermaid> pie title 常量使用场景分布 "配置参数" : 45 "数学常数" : 25 "应用元数据" : 20 "其他" : 10 </mermaid> === 实际案例 === '''场景1:数学计算''' <syntaxhighlight lang="kotlin"> const val GOLDEN_RATIO = 1.6180339887 fun calculateGoldenRectangle(width: Double): Double { return width * GOLDEN_RATIO } </syntaxhighlight> '''场景2:Android开发''' <syntaxhighlight lang="kotlin"> object ApiConfig { const val BASE_URL = "https://api.example.com" const val TIMEOUT_SECONDS = 30 } class UserService { fun fetchUsers(): List<User> { val retrofit = Retrofit.Builder() .baseUrl(ApiConfig.BASE_URL) .timeout(ApiConfig.TIMEOUT_SECONDS) .build() // ... 其他实现 } } </syntaxhighlight> == 性能考量 == 编译时常量会在字节码中被直接替换为字面量,这带来以下优势: * 零运行时开销 * 可以被注解处理器使用 * 允许跨模块使用 数学表达式示例: <math> const val SPEED_OF_LIGHT = 299792458 \text{ m/s} </math> == 最佳实践 == 1. 优先使用`const val`存储真正的不可变值 2. 对需要复杂初始化的值使用`val` 3. 常量命名遵循`UPPER_SNAKE_CASE`规范 4. 将相关常量组织在单例对象或伴生对象中 === 错误示例 === <syntaxhighlight lang="kotlin"> // 错误:const不能用于局部变量 fun calculate() { const val TAX_RATE = 0.2 // 编译错误 } // 错误:const不能用于非基本类型 const val user = User("Alice") // 编译错误 </syntaxhighlight> == 进阶主题 == === 常量传播优化 === Kotlin编译器会对常量表达式进行优化: <syntaxhighlight lang="kotlin"> const val WIDTH = 100 const val HEIGHT = 200 val area = WIDTH * HEIGHT // 编译时会直接计算为20000 </syntaxhighlight> === 跨模块常量 === 在多模块项目中,可以使用`public const val`使常量对其他模块可见: ```kotlin // 在common模块中 public const val SHARED_CONST = "Value" // 在其他模块中可以直接引用 ``` == 总结 == Kotlin的常量系统提供了灵活的不可变值管理方式。关键要点: * 区分`const val`和`val`的使用场景 * 编译时常量有严格的限制条件 * 合理使用常量能提升代码质量和性能 * 遵循命名规范和组织原则 通过本文的学习,你应该能够根据具体需求选择适当的常量声明方式,并理解其背后的原理和最佳实践。 [[Category:编程语言]] [[Category:Kotlin]] [[Category:Kotlin基础]]
摘要:
请注意,所有对代码酷的贡献均被视为依照知识共享署名-非商业性使用-相同方式共享发表(详情请见
代码酷:著作权
)。如果您不希望您的文字作品被随意编辑和分发传播,请不要在此提交。
您同时也向我们承诺,您提交的内容为您自己所创作,或是复制自公共领域或类似自由来源。
未经许可,请勿提交受著作权保护的作品!
取消
编辑帮助
(在新窗口中打开)