
Kotlin基本类型
Kotlin基本类型Kotlin没有基础数据类型,但是封装了6种数值类型,分别是Double、Float、Long、Int、Short、Byte。此外还有字符类型Char。1、NumberKotlin中定义的6中数值类型都继承自Number父类。父类定义如下,定义了7中方法,也就是Kotlin中所有的数值类型都可以调用上面的方法转换。2、常量在《Kotlin基本语法》中介绍了变量,现在了解一下什么
编程语言 · 共 28 篇 · 按发布时间正序排列
从基础语法到协程与依赖注入:Kotlin 语言体系学习

Kotlin基本类型Kotlin没有基础数据类型,但是封装了6种数值类型,分别是Double、Float、Long、Int、Short、Byte。此外还有字符类型Char。1、NumberKotlin中定义的6中数值类型都继承自Number父类。父类定义如下,定义了7中方法,也就是Kotlin中所有的数值类型都可以调用上面的方法转换。2、常量在《Kotlin基本语法》中介绍了变量,现在了解一下什么
Kotlin循环语句每门语言都要学一下循环语句,虽然每种语言都有for、while等循环,但总有些各自的特色。1、for循环for循环遍历集合或者数组,使用 in 关键字遍历任何提供迭代器。语法:例:先定义一个数组或集合array:遍历集合array:通常还需要用到索引index,调用集合的withIndex()方法参与循环遍历。例:使用下面的方式遍历for循环,同时获取元素当前索引index和当
Kotlin 数据类与密封类详解在 Java 里,写一个"纯数据"的类要手写一堆 getter/setter/equals/hashCode/toString,写一个"有限取值"的类型又得靠枚举或抽象类加 if-else。Kotlin 为这两类高频场景提供了专门语法:数据类(data class)专治"持有数据"的样板代码,密封类(sealed class)专治"受限分类"的穷尽匹配。本文把两者的
Kotlin object 关键字详解:对象表达式、对象声明与伴生对象在 Java 里,"匿名内部类""单例""静态成员"是三套各不相同的写法,琐碎且易错。Kotlin 用一个 object 关键字把它们统一了——根据出现位置和是否带名字,分别表达"匿名对象""单例""类级静态成员"三种语义。本文把这三种用法、它们的差异与陷阱一次讲透。参考文档:Kotlin 官方文档 · Object decla

数据类:data class在Java中toString()、equals()、hashCode()方法非常熟悉,这是Object基类中的固有方法。重写hashCode()和equals()实现对象之间的比较。toString()方法就更不用说了,如果要打印某个对象,就需要重写toString()再拼凑字符串,很麻烦!1、数据类好在Kotlin总结了很多Java开发中的痛点,不必再重写这些基础方法

伴生对象:companionKotlin语言中类不能有静态成员,像Java那样在类中用static关键字修饰的变量。1、伴生对象但是Kotlin提供了伴生对象,这个概念提供类似Java中通过类访问其中静态成员的语法。1.1、定义用companion关键字修饰在类中定义的对象。注意:每个类最多只能定义一个伴生对象1.2、名称①可以给伴生对象指定一个名称伴生对象本质上还是生成一个同名的类,并且用“饿汉
kotlin委托代理设计模式中有个委托模式(即代理模式),kotlin中的委托可以通过by关键字实现。1、接口委托如何用Kotlin实现一个接口委托呢?举个例子,有一个接口:普通方式,先实现这个接口:在用代理类封装一下:换成Kotlin,仅需一个by关键字即可:2、属性委托属性委托指的是一个类的某个属性值不是在类中直接进行定义,而是将其托付给一个代理类,从而实现对该类的属性统一管理。3、延迟委托使

Kotlin contract 用法及原理在阅读Kotlin源码的时候,会发现很多常用方法里都有contract的身影:contract(契约)是一种 Kotlin 面向编译器约定的一种规则,它帮助编译器更加智能地识别某些需要特定的代码条件,为代码创建更加友好的上下文关联环境。1、contract定义Kotlin在1.3版本以实验室功能的方式开始引入contract,截止至当前Kotlin最新版本
Kotlin重载函数和默认参数冲突,会调用谁?有一个简单的关于函数重载和默认参数结合的问题,最近问了很多开发都不知道,说明平时没有关注或者很少发散思考。首先,定义重载函数。这个大家都不陌生,Koltin当然也可以,定义两个printMessage同名方法:一个有参数,一个无参数。同时Koltin也支持默认参数:这里给fun printMessage(message: Double = 1)方法的参
Kotlin ByteArray 和 ByteBuffer 深度解析1、ByteArray(字节数组)1.1、基本特性固定大小的原生字节序列JVM上对应Java的byte[]索引访问速度极快(O(1))1.2、创建方式1.3、核心操作1.4、二进制数据处理示例2、ByteBuffer(字节缓冲区)2.1、设计目的提供结构化二进制数据读写能力支持高低级混合操作内置字节序(endianness)控制2

Kotlin里的typealias关键字typealias 是 Kotlin 里的一个关键字,用于为已有的类型创建新的别名。它本质上是给类型加个“昵称”,这样可以让代码更简洁、可读性更强,特别是在类型很长、很复杂的时候。1、基本语法比如有一个很长的函数类型:定义之后,ClickListener 就能用在任何地方代替原本的 (Int, String) -> Unit 类型。2、主要用途·简化类型书写
深入浅出 Kodein 依赖注入框架1、什么是 KodeinKodein 是一个轻量级的依赖注入框架,专为 Kotlin 设计,提供了简洁、类型安全的依赖注入方案。它的名称来源于 "KOtlin DEpendency INjection" 的缩写,体现了其为 Kotlin 量身定制的特性。核心优势: - 完全为 Kotlin 设计,充分利用 Kotlin 语言特性 - 类型安全,编译时检查依赖关系

Kotlin 数据流:冷热Flow 全面解析1、Flow 概述Flow 是 Kotlin 协程中的数据流处理工具,它提供了一种响应式编程模型,用于处理异步数据流。Flow 基于协程构建,具有挂起函数的特性,可以轻松处理异步操作而不会阻塞主线程。核心特点: - 异步处理:基于协程,支持挂起操作 - 响应式:支持数据流的转换和处理 - 背压处理:自动处理生产者和消费者之间的速度差异 - 操作符丰富:提

Kotlin Flow 操作符详解Kotlin Flow 是 Kotlin 协程库中用于处理异步数据流的强大工具。Flow 提供了丰富的操作符,使我们能够以声明式的方式处理数据流。本文将详细介绍 Kotlin Flow 的常用操作符及其用法。1、Flow 基本概念Flow 是一种冷流(cold stream),只有当终端操作符被调用时才会开始发射数据。它具有以下特点: - 异步数据流 - 可取消

coroutineScope 与 supervisorScope:Kotlin 协程作用域的核心区别1、核心概念在 Kotlin 协程中,coroutineScope 和 supervisorScope 是两个重要的作用域构建器,它们的主要区别在于异常处理策略。2、coroutineScope- 异常传播:当任何子协程抛出未捕获的异常时,会立即取消所有其他子协程,异常会向上传播- 适用场景:任务之
Koin依赖注入框架深度解析与实践指南1、什么是 KoinKoin 是一个轻量级、实用的 Kotlin 依赖注入框架,由 InsertKoinIO 团队开发。它专为 Kotlin 设计,采用简洁的 DSL 语法,无需注解处理器,无需代码生成,完全基于 Kotlin 语言特性实现依赖注入。核心优势: - 纯 Kotlin 实现,无注解、无代码生成 - 简洁直观的 DSL 语法 - 轻量级,启动速度快

Kotlin Channel 深度解析1、Channel 核心概念Channel 是 Kotlin Coroutines 中用于在协程之间进行通信的核心组件,它提供了一种安全、高效的消息传递机制。Channel 本质上是一个阻塞队列,支持发送和接收操作,具有背压控制能力。核心特性: - 支持无缓冲和有缓冲模式 - 提供公平和非公平的调度策略 - 支持多种关闭机制 - 与协程生命周期紧密集成 - 提

Kotlin协程深度解析:suspendCoroutine vs suspendCancellableCoroutinesuspendCoroutine 和 suspendCancellableCoroutine 是 Kotlin 协程中将回调式 API 转换为挂起函数的核心工具。前者提供基础的续体挂起能力,后者在此基础上增加了取消支持和线程安全保障。本文从源码机制到实战场景,全面对比两者的差异与

KEEP 详解:Kotlin 语言的演进提案机制用 Kotlin 的人每天都在吃协程、密封接口、value class 这些特性的红利,但很少有人想过:一个语言特性从"想法"到"落地"要走什么流程?答案就是 Kotlin/KEEP——Kotlin Evolution and Enhancement Process(Kotlin 演进与增强流程)。它是 JetBrains 官方维护的提案仓库,每一份

chrisbanes/skills 深度解析:为 Kotlin 与 Jetpack Compose 而生的 AI 技能集Chris Banes(长期活跃于 Android 生态、曾任职 Google Android 团队并深度参与 Jetpack 与 Compose 生态)开源了一套面向 Kotlin、Jetpack Compose 与 Android 开发的 AI 辅助技能集 https://g

Apollo Kotlin 详解:Kotlin 多平台 GraphQL 客户端后端上了 GraphQL,Android/Kotlin 端要一个既类型安全又能跨平台的客户端——apollographql/apollo-kotlin(Apollo Kotlin)是行业事实答案:Apollo 官方维护的 GraphQL 客户端,运行于 Android 与全部 Kotlin 多平台目标,以代码生成实现从服

awesome-kotlin 详解:Kotlin 生态的官方精选导航学一门语言最费时间的往往不是语法,而是"该用哪个库":网络请求、依赖注入、序列化、协程扩展……每个方向都有一堆候选。开源项目 Heapy/awesome-kotlin(awesome-kotlin)就是为解决选型焦虑而生:受 awesome-java 启发的 Kotlin 精选清单,配套 kotlin.link 分类导航站点、RS

KotlinPoet 详解:Square 出品的 .kt 源码生成库写注解处理器、KSP 处理器或 Gradle 代码生成插件时,最后一步总要"把代码写成文本文件"——字符串拼接缩进、转义、import 排序,全是脏活。Square 开源的 square/kotlinpoet(KotlinPoet)把这步变成了 API 调用:用 Kotlin/Java 代码描述类、函数、属性与 KDoc,输出格式

Anko 详解:Kotlin 安卓开发的先行者与退场如今用 Jetpack Compose 写声明式 UI 的开发者可能不知道,早在 Compose 诞生前五年,JetBrains 就官方维护过一套纯 Kotlin 的声明式 UI 方案——Kotlin/anko(Anko)。它用 DSL 取代 XML 布局、用扩展函数抹平 Android SDK 的粗糙边缘,一度是 Kotlin 安卓开发的标配;

Ktor:JetBrains 出品的 Kotlin 异步 Web 框架Kotlin 开发者写服务端,绕不开一个名字——Ktor。它是 JetBrains 官方出品的异步框架,用于构建微服务与 Web 应用,从头到尾用 Kotlin 编写。与 Spring 那种"全家桶"不同,Ktor 走的是轻量、无主见、协程原生的路线:不替你选日志、模板、持久化、序列化方案,一切功能通过统一的拦截机制以插件形式安

kotlinx.serialization 详解:Kotlin 官方无反射序列化库Kotlin 项目处理 JSON,过去常借 Gson、Jackson,但它们依赖反射或注解扫描,在 Kotlin/JS、Native 与混淆环境下问题不断。官方答案 Kotlin/kotlinx.serialization(kotlinx.serialization)走的是编译期路线:编译器插件为 @Serializ