IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> Kotlin 快速入门 -> 正文阅读

[移动开发]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){}
    
  • 协程
  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-02-09 20:49:03  更:2022-02-09 20:50:50 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 14:59:40-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码