当前位置: 首页 > news >正文

Kotlin 快速入门

目录
  • 一、Kotlin 核心学习要点(快速入门)
    • 1. 基础特性(与 Java 核心差异)
    • 2. 关键语法糖
    • 3. 与 Java 互操作
  • 二、高频面试题(精简版,含核心答案)
    • 1. Kotlin 如何解决空指针异常(NPE)?
    • 2. Kotlin 中 valvar 的区别?
    • 3. Kotlin 数据类(data class)的作用?有哪些限制?
    • 4. Kotlin 协程和线程的区别?
    • 5. Kotlin 扩展函数的实现原理?
    • 6. Kotlin 中 lateinitby lazy 的区别?
    • 7. Kotlin 如何实现单例?
    • 8. Kotlin 与 Java 的主要区别?
  • 三、总结

一、Kotlin 核心学习要点(快速入门)

1. 基础特性(与 Java 核心差异)

特性 核心说明 示例
空安全 显式声明可空/非空类型,杜绝 NPE var name: String? = null(可空)
var age: Int = 20(非空)
数据类 自动生成 equals()/hashCode()/toString() data class User(val id: Long, val name: String)
密封类 限制子类范围,替代枚举更灵活 sealed class Result { data class Success(val data: String): Result() }
扩展函数 给现有类新增方法,无需继承 fun String.isPhone(): Boolean = this.matches(Regex("1[3-9]\\d{9}"))
协程 轻量级线程,简化异步编程 GlobalScope.launch { delay(1000); println("异步执行") }
函数式编程 内置 map/filter/reduce 等高阶函数 listOf(1,2,3).filter { it > 1 }.map { it * 2 }
委托 类委托/属性委托,减少重复代码 class MyList<T> : List<T> by ArrayList<T>()

2. 关键语法糖

  • 类型推导val num = 10(自动推导为 Int)
  • 字符串模板println("姓名:$name,年龄:${age + 1}")
  • 区间表达式for (i in 1..10)(闭区间)、for (i in 1 until 10)(左闭右开)
  • when 表达式:替代 switch,支持任意类型匹配
    when (num) {1 -> println("一")in 2..5 -> println("2-5")else -> println("其他")
    }
    

3. 与 Java 互操作

  • Kotlin 可直接调用 Java 代码,Java 调用 Kotlin 需注意:
    • 可空类型:Java 调用时需手动判空
    • 静态方法:Kotlin object 类/companion object 的方法,Java 需通过 类名.Companion.方法() 调用
    • 扩展函数:Java 需通过 扩展函数所在类.函数名(接收者, 参数) 调用

二、高频面试题(精简版,含核心答案)

1. Kotlin 如何解决空指针异常(NPE)?

  • 答案:① 显式空安全类型:String?(可空)/String(非空),非空类型不能赋值 null;② 安全调用符 ?.name?.length(name 为 null 时返回 null);③ 非空断言 !!(慎用):name!!.length(强制非空,null 则抛 NPE);④ Elvis 运算符 ?:name ?: "默认值"(null 时取默认值)。

2. Kotlin 中 valvar 的区别?

  • 答案:① val:不可变引用(只读),类似 Java final,初始化后不能重新赋值,但其指向的对象内容可改(如 val list = mutableListOf(1),list.add(2) 合法);② var:可变引用,可多次赋值。

3. Kotlin 数据类(data class)的作用?有哪些限制?

  • 答案:① 作用:自动生成 equals()hashCode()toString()copy() 等方法,简化 POJO 类编写;② 限制:主构造函数至少有一个参数;参数必须是 val/var;不能是抽象/密封/内部/枚举类。

4. Kotlin 协程和线程的区别?

  • 答案:① 协程是轻量级线程,由 Kotlin 协程框架管理(用户态),线程由 OS 管理(内核态);② 协程切换成本低,1 个线程可运行数千个协程;③ 协程支持挂起/恢复,无上下文切换开销;④ 语法更简洁,用 launch/async 替代线程创建。

5. Kotlin 扩展函数的实现原理?

  • 答案:扩展函数是静态方法的语法糖,编译后会生成一个静态类,扩展函数作为静态方法,接收者作为第一个参数。例如 fun String.isPhone() 编译后为 public static boolean isPhone(String $this),因此扩展函数不能覆盖,也不能访问接收者的私有成员。

6. Kotlin 中 lateinitby lazy 的区别?

  • 答案:
    特性 lateinit by lazy
    适用类型 可变变量(var) 不可变变量(val)
    初始化时机 手动初始化(使用前必须赋值) 首次调用时懒加载初始化
    适用场景 非空引用,无法在声明时初始化(如 Android 控件) 耗时操作(如初始化单例),延迟加载

7. Kotlin 如何实现单例?

  • 答案:最推荐「对象表达式」(饿汉式,线程安全):
    object Singleton {fun doSomething() {}
    }
    
    懒汉式(按需加载):
    class Singleton private constructor() {companion object {val INSTANCE by lazy(mode = LazyThreadSafetyMode.SYNCHRONIZED) { Singleton() }}
    }
    

8. Kotlin 与 Java 的主要区别?

  • 答案:① 空安全(核心);② 函数式编程支持(高阶函数、Lambda);③ 语法简洁(数据类、扩展函数、when 表达式);④ 协程;⑤ 无静态成员(用 object/companion object 替代);⑥ 智能类型转换(无需手动强转)。

三、总结

  1. 核心考点:空安全、数据类、协程、扩展函数、val/var、委托是面试高频,需重点掌握;
  2. 学习重点:先掌握与 Java 的核心差异(空安全、语法糖),再深入协程和函数式编程;
  3. 面试技巧:回答时结合「语法+原理+使用场景」,例如讲空安全时,不仅说语法,还要说明解决的问题(NPE)和实际用法。
http://www.jsqmd.com/news/378901/

相关文章:

  • 使用秘笈:从“聊天工具”到“效率引擎”的技术实战指南【好书推荐】
  • 【AI赋能测试】需求分析、用例设计、用例编写一步搞定全流程操作笔记-【豆包】
  • 京东e卡回收正规平台,500元面额最新市场行情追踪 - 京回收小程序
  • 2026年评价高的PP餐盒注塑机/餐盒注塑机可靠供应商参考推荐几家 - 行业平台推荐
  • 2026年口碑好的QFN托盘芯片载盘/耐高温Tray芯片载盘公司实力参考哪家强(可靠) - 行业平台推荐
  • 学霸同款 9个AI论文工具测评:研究生高效写作与毕业论文必备神器
  • 2026年天津Q50录取率高的国际高中推荐,小初高一贯制、G5申请通过率与牛剑G5升学率全覆盖 - 品牌2025
  • 百考通:让毕业论文写作不再“头秃”,AI赋能学术之路
  • Kong网关从入门到精通:微服务API网关实战深度解析:原理、实战与踩坑记录
  • zabbix 7 监控 oracle 19c 方法 增加agent2监控需要的变量环境
  • 2026最新!降AI率软件 千笔·专业降AIGC智能体 VS 文途AI,继续教育专属首选
  • 2026年天津国际高中费用价格多少,一年费用明细及私立国际高中学费一览表 - 品牌2025
  • 家装艺术漆2026优选,这些供应商服务超贴心,诺兰迪艺术涂料/艺术涂料/家装艺术漆/艺术漆,家装艺术漆供应商哪家强 - 品牌推荐师
  • 【C++】多态对象拷贝
  • 百考通:双维降重神器,让论文轻松通关AIGC与重复率双重检测!
  • 2026年口碑好的高性能电动车型驱动电机超薄电机绝缘/人形机器人超薄电机绝缘怎么选真实参考销售厂家参考 - 行业平台推荐
  • 百考通期刊论文智能生成系统:让高水平学术发表不再是难题
  • 完整教程:微软 Agent Framework:构建、编排和部署 AI 代理的全面框架
  • 闭眼入!8个一键生成论文工具测评:专科生毕业论文+科研写作全攻略
  • php crm客户属性字段变更记录:业务合规与数据可信的核心保障
  • AlphaFold破解心脏病关键蛋白结构
  • 百考通实践报告智能生成:让实习成果专业呈现,轻松斩获导师好评!
  • 【超全】基于微信小程序的居住证申报系统【包括源码+文档+调试】
  • 2026年知名的新型建材更新厂家选择指南哪家好 - 行业平台推荐
  • 隧道开挖flac-pfc耦合,包含平衡开挖部分 如图,隧道衬砌外面是pfc的ball与wall...
  • 百考通答辩PPT生成:智能定制,让答辩轻松通关!
  • 2026年评价高的上海办公装饰设计/办公室装潢设计口碑排行精选供应商推荐 - 行业平台推荐
  • 2026培育钻石品牌价值排行榜:基于五大维度的科学测评,谁是真正的“质价比”之王? - 品牌企业推荐师(官方)
  • 百考通任务书智能生成:让学术研究从“第一份文件“就专业规范!
  • 2026年口碑好的蔬菜食品包装机/生鲜食品包装机哪家强公司实力参考(精选) - 行业平台推荐