Kotlin
abs625
为众人抱薪者,不可使其冻毙于风雪
展开
-
Kotlin中的空判断
Kotlin中的空判断前言字符串空判断空字符串:""纯空格字符串:" "null字符串:null值为null字符串:"null"集合空判断集合值为null集合size为0尾巴前言Kotlin中一切皆对象,这里我们理解成对象的空判断。由于Kotlin是空安全的,普通可空对象可以通过 ?. 来避免产生空指针异常。...val p: Person? = nullprintln("age is : ${p?.age}")...就算p对象为null,运行的时候也不会产生空指针异常而导致应用退出,打印如原创 2020-11-26 15:48:23 · 9595 阅读 · 1 评论 -
Kotlin学习笔记20——协程(Coroutines)
Kotlin中的Coroutines(协程)什么是协程?为什么要使用协程?协程创建launch方式创建runBlocking方式创建async方式创建withContext方式创建挂起函数取消和超时什么是协程?协程可以看成轻量级线程,通过挂起和恢复的机制进行协程任务调度,本质上是在线程上进行任务调度。而协程和线程的关系大概可以类比成线程和进程的关系。进程可以包含多个线程,而线程也能包含多个协程,但是线程执行的时候是无序的,协程则是按顺序执行。为什么要使用协程?一般需要使用协程的场景都可以使用协程,比原创 2020-11-04 17:16:30 · 638 阅读 · 0 评论 -
Kotlin学习笔记19——内置函数之 let 、also、apply、run、with
Kotlin内置函数之 let 、also、apply、run、with前言内联函数之with使用姿势应用场景内联扩展函数之 let 和 also使用姿势应用场景内联扩展函数之apply和 run使用姿势使用场景let,with,run,apply,also函数区别尾巴前言在Kotlin中的源码标准库(Standard.kt)中提供了一些Kotlin扩展的内置函数可以优化kotlin的编码。Standard.kt是Kotlin库的一部分,它定义了一些基本inline函数。这些内置函数可以优化kotlin原创 2020-10-14 16:41:07 · 852 阅读 · 0 评论 -
Kotlin学习笔记18——list,map,set相关操作
Kotlin学习笔记18——list,map,set相关操作前言List按索引取元素取列表的一部分查找元素位置线性查找在有序列表中二分查找Comparator 二分搜索比较函数二分搜索List 写操作添加更新删除Map取键与值过滤plus 与 minus 操作Map 写操作添加与更新条目删除条目Set尾巴前言上一篇我们学习了Kotlin中集合公共操作,今天继续来学习Kotlin中的集合。集合的内容包含的比较多,分为三篇来学习,今天是第三篇我们学习list,map,set相关特定API操作,算是对上篇公共原创 2020-07-16 17:34:03 · 1076 阅读 · 0 评论 -
Kotlin学习笔记17——集合公共操作
Kotlin学习笔记17——集合操作前言集合操作概述公共操作集合转换映射双路合并关联打平字符串表示过滤按条件过滤划分检验加减操作符分组取集合部分SliceTake 与 dropChunkedWindowed取单个元素按位置取按条件取随机取检测存在与否排序自然顺序(字典排序,或者数值大小排序)倒序随机顺序自定义排序聚合操作Fold 与 reduce集合写操作添加元素删除元素更新元素尾巴前言上一篇我们学习了Kotlin中的集合的概述,今天继续来学习Kotlin中的集合。集合的内容包含的比较多,分为三篇来学习原创 2020-07-14 18:25:12 · 759 阅读 · 0 评论 -
Kotlin学习笔记16——集合概述
Kotlin学习笔记16——集合概述前言基本集合类型CollectionListMutableListSetMutableSetMapMutableMap空集合复制迭代器List 迭代器可变迭代器区间和数列区间数列实用函数序列构造序列使用尾巴前言上一篇我们学习了Kotlin中的委托,今天继续来学习Kotlin中的集合。集合的内容包含的比较多,分为两篇来学习,今天是学习的集合概述,包括集合分类,定义,以及简单使用。基本集合类型Kotlin 标准库提供了基本集合类型的实现: set、list 以及 ma原创 2020-07-10 17:31:35 · 550 阅读 · 0 评论 -
Kotlin学习笔记15——委托
Kotlin学习笔记15——委托前言kotlin 委托类委托覆盖由委托实现的接口成员属性委托标准委托可观察属性 Observable把属性储存在映射中Not Null属性委托要求翻译规则提供委托尾巴前言上一篇,我们学习了Kotlin中的object关键字,今天继续来学习Kotlin中的委托。kotlin 委托委托模式是软件设计模式中的一项基本技巧。在委托模式中,有两个对象参与处理同一个请求,接受请求的对象将请求委托给另一个对象来处理。Kotlin 直接支持委托模式,更加优雅,简洁。Kotlin 通原创 2020-07-09 14:11:31 · 520 阅读 · 0 评论 -
Kotlin学习笔记14——object关键字
Kotlin学习笔记14——object关键字前言对象表达式对象声明伴生对象对象表达式和对象声明之间的语义差异尾巴前言上一篇,我们学习了Kotlin中的泛型,今天继续来学习Kotlin中的object关键字用法。对象表达式要创建一个继承自某个(或某些)类型的匿名类的对象,我们会这么写:editText.addTextChangedListener(object : TextWatcher{ override fun afterTextChanged(s: Editable?) {原创 2020-07-07 17:39:45 · 302 阅读 · 0 评论 -
Kotlin学习笔记13——泛型
Kotlin学习笔记13——泛型前言Kotlin 泛型泛型类泛型接口泛型方法泛型约束类型擦除型变声明处型变使用处型变星号投射尾巴前言上一篇,我们学习了Kotlin中的数据类和密封类,今天继续来学习Kotlin中的泛型。Kotlin 泛型泛型,即 “参数化类型”,将类型参数化,可以用在类,接口,方法上。与 Java 一样,Kotlin 也提供泛型,为类型安全提供保证,消除类型强转的烦恼。泛型类class Box<T>(t: T) { var value = t}泛型接口原创 2020-07-02 17:13:44 · 433 阅读 · 0 评论 -
Kotlin学习笔记12——数据类和密封类
Kotlin学习笔记12——数据类和密封类前言数据类在类体中声明的属性复制componentN解构声明密封类尾巴前言上一篇,我们学习了Kotlin中的拓展,今天继续来学习Kotlin中的数据类和密封类。数据类我们经常创建一些只保存数据的类。 在这些类中,一些标准函数往往是从数据机械推导而来的。在 Kotlin 中,这叫做 数据类 并标记为 data:data class User(val name: String, val age: Int)为什么要引入数据类?我们先看一个Java POJO(原创 2020-06-30 17:20:01 · 264 阅读 · 0 评论 -
Kotlin学习笔记11——拓展
Kotlin学习笔记11——拓展前言Kotlin 扩展扩展函数扩展函数作用域普通作用域顶层作用域指向扩展函数的引用把扩展函数的引用赋值给变量扩展函数是静态解析的扩展一个空对象扩展属性伴生对象的扩展尾巴前言上一篇,我们学习了Kotlin中的继承,今天继续来学习Kotlin中的拓展。Kotlin 扩展Kotlin 能够扩展一个类的新功能而无需继承该类或者使用像装饰者这样的设计模式。 这通过叫做 扩展 的特殊声明完成。 例如,你可以为一个你不能修改的、来自第三方库中的类编写一个新的函数。 这个新增的函数就原创 2020-06-29 17:29:49 · 255 阅读 · 0 评论 -
Kotlin学习笔记10——继承
Kotlin学习笔记10——继承前言Kotlin 继承构造函数子类有主构造函数子类没有主构造函数重写函数重写属性重写派生类初始化顺序调用超类实现尾巴前言上一篇,我们学习了Kotlin中的类和对象,今天继续来学习Kotlin中的继承。Kotlin 继承Kotlin 中所有类都继承该 Any 类,它是所有类的超类,对于没有超类型声明的类是默认超类:class Example // 从 Any 隐式继承Any 默认提供了三个函数:equals()hashCode()toString()注意原创 2020-06-28 17:12:51 · 233 阅读 · 0 评论 -
Kotlin学习笔记9——类和对象
Kotlin学习笔记9——类和对象前言类定义类的属性属性定义Getters 与 Setters实例幕后字段幕后属性构造函数主构造器次构造函数抽象类嵌套类内部类嵌套类和内部类在使用时的区别创建对象的区别引用外部类的成员变量的方式不同匿名内部类枚举类类的修饰符尾巴前言上一篇,我们学习了Kotlin中的内联函数,今天继续来学习Kotlin中的类和对象。类定义Kotlin 类可以包含:构造函数和初始化代码块、函数、属性、内部类、对象声明,Kotlin 中使用关键字 class 声明类,后面紧跟类名。接下来看原创 2020-06-24 17:10:40 · 326 阅读 · 0 评论 -
Kotlin学习笔记8——内联函数
Kotlin学习笔记8——内联函数前言定义内联函数好处inline关键字noinline关键字crossinline关键字reified关键字尾巴前言上一篇,我们学习了Kotlin中的高阶函数和Lambda表达式,今天继续来学习Kotlin中的函数。由于Kotlin中支持高阶函数语法,所以函数我们分为三篇来学习,今天是第三篇:内联函数。定义被inline标记的函数就是内联函数,示例:public inline fun CharSequence.sumBy(selector: (Char) ->原创 2020-06-24 14:24:11 · 566 阅读 · 0 评论 -
Kotlin学习笔记7——高阶函数和Lambda表达式
Kotlin学习笔记7——高阶函数和Lambda表达式前言高阶函数函数用作函数参数函数用作函数返回值自定义高阶函数Lambda 表达式与匿名函数Lambda 表达式语法拖尾 lambda 表达式it:单个参数的隐式名称lambda 表达式中返回一个值下划线用于未使用的变量匿名函数闭包尾巴前言上一篇,我们学习了Kotlin中的普通函数,今天继续来学习Kotlin中的函数。由于Kotlin中支持高阶函数语法,所以函数我们分为三篇来学习,今天是第二篇:高阶函数和Lambda表达式。高阶函数高阶函数是将函数原创 2020-06-24 11:19:59 · 758 阅读 · 0 评论 -
Kotlin学习笔记6——普通函数
Kotlin学习笔记6——函数前言传统函数函数声明函数用法参数默认参数具名参数返回 Unit 的函数单表达式函数显式返回类型可变数量的参数(Varargs)中缀表示法函数作用域局部函数成员函数泛型函数尾递归函数尾巴前言上一篇,我们学习了Kotlin中的返回和跳转,今天继续来学习Kotlin中的函数。传统函数先看下平常使用的传统函数函数声明Kotlin 中的函数使用 fun 关键字声明:fun double(x: Int): Int { return 2 * x}函数用法调用函数原创 2020-06-24 08:44:08 · 443 阅读 · 0 评论 -
Kotlin学习笔记5——返回和跳转
Kotlin学习笔记5——返回和跳转前言返回和跳转break 和 continue 标签标签处返回尾巴前言上一篇,我们学习了Kotlin循环控制,今天继续来学习Kotlin中的返回和跳转。返回和跳转Kotlin 有三种结构化跳转表达式:return:默认从最直接包围它的函数或者匿名函数返回。break:终止最直接包围它的循环。continue:继续下一次最直接包围它的循环。所有这些表达式都可以用作更大表达式的一部分:val s = person.name ?: return在循环中原创 2020-06-23 17:33:18 · 600 阅读 · 0 评论 -
Kotlin学习笔记4——循环控制
Kotlin学习笔记4——循环控制前言for 循环while 与 do...while 循环尾巴前言上一篇,我们学习了Kotlin条件控制,今天继续来学习Kotlin中循环控制。for 循环for 循环可以对任何提供迭代器(iterator)的对象进行遍历,语法如下:for (item in collection) print(item)循环体可以是一个代码块:for (item: Int in ints) { // ……}如上所述,for 可以循环遍历任何提供了迭代器的对象。原创 2020-06-23 12:42:46 · 224 阅读 · 0 评论 -
Kotlin学习笔记3——条件控制
Kotlin学习笔记3——条件控制前言IF 表达式使用区间When 表达式尾巴前言上一篇,我们学习了Kotlin中的常用的基本语法,今天继续来学习Kotlin中条件控制。IF 表达式一个 if 语句包含一个布尔表达式和一条或多条语句。// 传统用法var max = a if (a < b) max = b// 使用 else var max: Intif (a > b) { max = a} else { max = b} // 作为表达式 表达式原创 2020-06-23 08:51:17 · 268 阅读 · 0 评论 -
Kotlin学习笔记2——基本语法
Kotlin学习笔记2——基本语法前言包的定义与导入程序入口点变量定义函数定义可变长参数函数lambda(匿名函数)注释字符串模板条件表达式空值与 null 检测for 循环when 表达式区间集合创建基本类及其实例尾巴前言上一篇,我们学习了Kotlin中常用的基本数据类型,今天继续来学习Kotlin中常用的基本语法。包的定义与导入包的声明应处于源文件顶部:package my.demo //包名定义import kotlin.text.* //导入包 fun test() {} //函数定原创 2020-06-22 16:11:35 · 374 阅读 · 0 评论 -
Kotlin学习笔记1——基本数据类型
Kotlin学习笔记1——基本数据类型前言环境搭建基本类型数值类型整数类型浮点类型字面常量数字比较类型转换位运算字符布尔数组字符串字符串模板尾巴前言自从Google把Kotlin语言作为Android开发的官方开发语言后,越来越多的人开始用Kotlin替代Java来进行Android开发。前段时间看见郭神写了个PermissiionX的库,竟然当时也只支持Kotlin,这越发肯定了我学习Kotlin的决心。环境搭建最新的Android Studio(文章下面都简称AS)稳定版4.0已经自带了Kotl原创 2020-06-22 11:28:17 · 481 阅读 · 0 评论