跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI 生图工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Kotlinjava

Kotlin 变量初始化策略:立即、延迟与惰性

Kotlin 变量初始化主要包含立即初始化、延迟初始化和惰性初始化三种策略。立即初始化在声明时直接赋值,使用 val 或 var。延迟初始化通过 lateinit 关键字实现,适用于非空类型且在使用前赋值的场景,需注意不能用于原始类型和可空类型,可通过 isInitialized 检查状态。惰性初始化利用 by lazy 委托属性,仅在首次访问时执行初始化逻辑并缓存结果,支持多种线程安全模式。这些策略帮助开发者根据具体需求管理变量生命周期和性能。

活在当下发布于 2026/3/15更新于 2026/9/1084 浏览
Kotlin 变量初始化策略:立即、延迟与惰性

变量初始化策略

1. 立即初始化
// 最常见的初始化方式
val name = "立即初始化"
var count = 0
2. 延迟初始化

// 场景:变量声明时无法立即初始化,但确保在使用前会初始化

// 方式 1:lateinit (用于非空类型,只能用于 var) lateinit var username: String

// println(username) // 错误:lateinit property username has not been initialized

fun setup() { username = "张三" // 在使用前初始化 println(username) // 正常 }

// lateinit 的限制:不能用于原始类型和可空类型 // lateinit var age: Int // 错误 // lateinit var email: String? // 错误

// 检查是否已初始化 if (::username.isInitialized) { println("username 已初始化:$username") }

3. 惰性初始化(by lazy)

// 场景:变量只在第一次使用时初始化,且初始化后不再改变 val expensiveResource: String by lazy { println("正在初始化资源…") // 这里可以执行复杂计算或 IO 操作 "初始化完成的数据" }

// 使用实例 fun main() { println("程序开始") println(expensiveResource) // 第一次访问,会执行初始化 println(expensiveResource) // 第二次访问,直接使用缓存的值 }

// lazy 的线程安全模式

目录

  1. 变量初始化策略
  2. 1. 立即初始化
  3. 2. 延迟初始化
  4. 3. 惰性初始化(by lazy)

更多推荐文章

查看全部
  • OpenCode AI 编程工具使用教程:从安装配置到实战技巧
  • WebP 格式简记
  • 让高斯动起来:3DGS 动态渲染的取舍与实操
  • VSCode + GitHub Copilot 从安装到 Agent 实战详解
  • PyTorch、CUDA、MMCV 与 MMDetection 版本兼容性指南
  • CentOS 一键安装 Microi 吾码低代码平台及依赖环境脚本
  • CentOS 系统定时执行 Python 邮件发送任务的五种方案
  • JDK21 下载与安装指南
  • Windows 10/11 下 Codex MCP 服务配置指南:Node.js 安装与调试
  • AI 产品经理入门指南:核心技能与机器学习基础
  • Flutter 三方库 mcp_server 的鸿蒙化适配指南
  • 策略模式:接口与委托的两种实现方式
  • 数论基础:最大公约数与最小公倍数的原理及实现
  • C++11 详解:列表初始化、右值引用与移动语义
  • Spring Boot 自动配置原理深度解析
  • Webman 框架性能对比分析
  • ActiveVLA: 将主动感知注入 VLA 模型以实现精准三维机器人操控
  • 英伟达 Feynman 芯片架构与 NemoClaw 开源智能体平台技术解析
  • AIGC 工具助力 2D 游戏美术全流程
  • Windows 部署 OpenAkita 并接入飞书,打造本地 AI 助手

相关免费在线工具

  • Keycode 信息

    查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online

  • Escape 与 Native 编解码

    JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online

  • JavaScript / HTML 格式化

    使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online

  • JavaScript 压缩与混淆

    Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online