美文网首页
kotlin基本语法

kotlin基本语法

作者: 书虫大王X | 来源:发表于2020-11-17 16:34 被阅读0次

在Google I/O 2017中,Google 宣布 Kotlin 成为 Android 官方开发语言,Kotlin语言被赞誉为Android世界里的Swift,简单概括就是:

  • 完全兼容Java
  • Null safe
  • 支持lambda表达式(比Java8更好)
  • 支持扩展
  • 跨平台开发
  • 开源
  • 语法简洁
  • 类型推断
  • 体验一致的开发工具链
    当然,也给Google免去了许多因为java而产生的纠纷

Kotlin 可以编译成Java字节码,也可以编译成 JavaScript,方便在没有 JVM 的设备上运行。
1、问号表达式:

  • 2 > 1 ? a : b (判断成立,则结果为a,不成立则结果为b)

2、判空表达式:

  • a ?: b (a成立则结果为a,a不成立则结果为b)
image.png

判断范围:


image.png

when语句赋值:


image.png
for循环:
image.png
image.png
image.png
Kotlin语法:

1、重写方法必须以override开头进行标识
2、类和方法默认都是不能被重写的,要重写必须以open开头进行标识
3、支持单继承,用:连接要继承的父类
4、类的三大特性:封装 、继承、多态
多态:
多态是面向对象的重要特性,简单点说:“一个接口,多种实现”,就是同一种事物表现出的多种形态。对不同类的对象发出相同的消息将会有不同的行为,多态在接口中的实现(统一接口):


image.png
image.png
image.png

属性:
1、kotlin类的属性声明的时候必须初始化


image.png
2、属性的变量在声明时默认提供set、get方法,可以重写setget方法,如果不想要set或get方法: image.png
3、在变量后面加 ?,表示可空
image.png
4、懒加载:

定义了一个变量,但是在定义时并没有值,在被访问的时候才有值


image.png
延迟加载:
一个变量肯定有值,但是不知道什么时候会有值,可以使用延迟加载;但是必须在某个时刻被初始化:
image.png

函数:
Unit:跟java中的void类似,表示返回值为空

class a( a: Int) 与class a(val a: Int)的区别:
class a(a: Int)就是给a类传递一个参数;而class a(val a: Int)相当于给 a 
类定义了一个属性,内部、外部都可以访问

抽象类:


image.png
  • 抽象方法、抽象属性在抽象类中不实现和初始化
  • 抽象类的属性和方法默认是open的(要用open修饰)
for循环
image.png

反射:

只知道一个类的名字、方法名、属性名,进而调用其具体功能
反射的具体规则需要自己创建

image.png
image.png
image.png

注解(annotation):

annotationTarget(注解对象):
class 类
constructor 类的构造函数
property 属性
file 文件
function 函数
VALUE_PARAMETER函数的参数
注解三个值对应的作用域:


image.png
  • constructors函数:构造对象的函数,但是被创建对象的类必须提供一个没有参数的constructors构造函数
  • 参数的属性:index name type


    image.png

协程的优点:

1.很容易离开主线程。我们试过很多方法来让操作远离主线程,AsyncTask、Loaders、Executorservice …甚至有开发者用到了RxJava。但协程可以让开发者只需要一行代码就完成这个工作,而且没有累人的回调处理。
2.样板代码最少。协程完全活用了Kotlin语言的能力,包括suspend方法。编写协程的过程就和编写普通的代码块差不多,编译器会帮助开发者完成异步化处理。
3.结构并发性。这个可以理解为针对操作的垃圾搜集器,当一个操作不再需要被执行时,协程会自动取消它。

  • 协程:内部实现是线程,是多线程的一个顶层封装,可以自动实现线程的切换,代码可以按照正常的顺序书写
  • 回调:可用于线程之间交换数据(线程与线程之间相互独立)
  • 进程:正在运行的程序就是一个进程,用来管理程序运行中需要的资源
  • 线程:进程中真正执行任务的最小单位
  • 如果有任务需要花费大量时间→选择创建独立的线程来执行这个任务

线程的缺点:
线程与线程之间通信
线程依赖
线程切换

java中UI线程为主线程,也只有主线程才能操纵UI界面

  • 当主线程运行结束时,其子线程还没有结束,此时子线程就没有意义了

相关文章

网友评论

      本文标题:kotlin基本语法

      本文链接:https://www.haomeiwen.com/subject/tczrhktx.html