栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Kotlin 快速入门

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Kotlin 快速入门

前戏

原理:kotlin作为一门语言,有独立语法,然后有专门编译器编译成class,所以和java完全兼容,最终都有java虚拟机解释。用kotlin代码看java代码

打开目标 Kotlin 文件看 Kotlin 字节码:Tools –> Kotlin –> Show Kotlin ByteCode在 字节码页点击左上角的 decompile 按钮,看 Java 文件 2011年JetBrains设计开发。测试运行方式:自家IDE、web在线工具、AS简洁。很多东西都可以考虑省掉。 基础

变量

var,(variable)可变变量val,(value)不可变变量所有数字都继承Number所有类型都是包装类(首字母大写) 函数

语法:修饰 fun 函数名(参数:类型)返回值{}。其中修饰可省,默认public;参数可省;返回值可省;函数体只有一行时,大括号可省;

public fun justDoIt (var a:Int?,var b:String) Int {}// 完整写法
fun justDoIt = 单行语句 // 最贱写法

普通类。class xxx (var a:Int){}数据类。data class xxx可继承类。open class xxx {}单例类。object xxx {}创建时,抛弃new 继承

class A(var a:Int):B(){}

1. (var a:Int)为A类的主构造函数
2. constructor声明次级构造函数,且必须继承主构造函数
如 constructor():this(1),次级构造函数可以传递,类似自定义view时候
3. 如果主构造函数只有次造函数,需要继承父类构造函数
class A:B{
constructor():super()
}

初始化用init{} 遍历for-in。抛弃for-i

for(v in 1..10)//[1,10]
for(v in 1 until 10)//[1,10)
for(v in 1 until 10 step x)//跳步
for(v in 10 downTo 1)// 降序

集合及遍历

list。listOf() 不可变集合;mutableListOf() 可变集合

listOf('a','b')
for(v in list){}

set。setOf() 不可变集合;mutablesettOf() 可变集合map。mapOf() 不可变集合;mutablemapOf() 可变集合

mapOf('k1' to v1,'k2' to v2)
for((key,value) in map){}

控制语句

if 可作为返回值,每一个条件的最后一行作为返回值while。和java完全一致。when 类似switch,语法:

when(value){// 其中value和括号可以挪进匹配语句处
匹配语句-> {}
else->{}
}

空指针

任何时候类型后边加?表示可空,不加即不可空?. 空则不执行!!. 空也执行且报错a ?: b。a不空则返回a,否则返回b

字符串内插入语句: ${}

中级

lambda

语法:{参数1:类型,参数n:类型-> 函数体},本质上就是一小段可以调用的代码块如果lambda作为最后一个参数,可以写在()外如果lambda只有一个入参,可以省略如此,函数体内用it代替入参如果lambda是最后一个入参,其本身只有一个入参,可以直接省略

button.setOnclikListerter{
}
高阶与内联函数

高阶函数:函数的入参是函数。简洁高级,已读不易懂,性能开销大。函数被对象化,内联函数:inline修饰,函数体代替对象,inline修饰的函数及传入的lambda都是内联函数,除非明确表明原生内联函数let、with、run、apply、also

obj.let{}或者obj?.let{}
with(obj){}
obj.run或者apply或者also{}

区别

1. let 用it代表对象,返回最后一行
2. with 用this代表对象,可省,返回最后一行
3. let+with=run 用this代表对象,可省,返回最后一行
4. apply约等于run,返回当前对象
5. also 用it代表对象,返回当前对象

自定义inline,

inline fun justDoIt(val a:Int,do1:(b)->b,noinline do2:(c)->c){}
协程
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/731719.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号