- kotlin特性:
- Kotlin是一种基于JVM的静态类型编程语言
- 与Java及JVM的完全互操作性
- 多平台:适合Android、浏览器和本地系统编程
- 语法简洁不咿嗦(便于学习)
- 富于表现力和高效的生产力
- 支持类型推断 例如,我们可以只写 val number=23 编译器会推断这 Int;
- 可以使用数据类 data class )以极简的方式创建 POJO;
- 运算符重载相当简单
- 快速、 方便地扩 置类、自定义类的函数与属性;
- 区分可空类型和不可空类型。直接在编译期语法层面检查可空类型 提供空安全 保障;
- Kotlin 含有功能丰富的集合类 StreamAPI;
- 集成扩展了简单实用的文件 I/ 、正则匹配、线程等工具类;
- 提供了实用强大的函数式编程支持 一等函数支持, Lambda 达式、高阶函数等;
- 能够轻松、方便地创建 DSL;
- 使用更加轻量级的协程进行并发编程
- IntelliJIDEA 发工具 一等支持;
- Android 开发有 Android Studio 内置原生支持
- 提供的 Anko 库( https: //github com/Kotlin/anko )使 Android 开发速度更快。
- Kotlin是设计运行在JVM上的语言,可以加载到JVM中执行文件中指定操作的字节码,下图 直观所示:
- 学习工具:
- 先运行一个重要的HelloWorld
- 通过这个HelloWorld可以看出Kotlin使用fun声明方法,而且可以推断语句分行结束,也可以使用Java的API,下面将详细学习Kotlin语法
基础语法:
- 变量与标识符
- 在Kotlin中所有的变量都是引用类型没有Java的基本数据类型了,Kotlin变量分为val(不可变类型)和var(可变类型)
- val 只读类型,仅能一次赋值,与Java中的final关键字相同, 尽量使用val可以带来可预测的行为和线程安全等特点。
- var是可写的,在生命周期中可以被多次赋值
就会报错error can not be reassigned,从此图可以看出kotlin具有变量类型推断的能力,提供了不少方便
- 关键字与修饰符:
- Kotiin 中的修饰符关键字主要分为 类修饰符、成员修饰符 访问权限修饰符、协变逆变修饰符、函数修饰符、属性修饰符、参数修饰符、具体化类型修饰符等
类修饰符
类修饰符 | 说明 |
abstract | 抽象类 |
final | 不可被继承final类 |
enum | 枚举类 |
open | 可继承open类 |
annotation | 注解类 |
sealed | 密封类 |
data | 数据类 |
访问权限修饰符
访问权限修饰符 | 说明 |
private | 私有,仅当前类可以访问 |
protected | 当前类以及继承该类的可访问 |
public | 默认值,对外可访问 |
internal | 模块内可访问 |
属性修饰符
属性修饰符 | 说明 |
const | 常量修饰符 |
协变逆变修饰符
协变逆变修饰符 | 说明 |
in | 消费者类型修饰符out T等价于?extends T |
out | 生产者类型修饰符,in T等价于?super T |
函数修饰符
函数修饰符 | 说明 |
tailrec | 尾递归 |
operator | 运算符重载函数 |
infix | 中缀函数 |
inline | 内联函数 |
external | 外部函数 |
suspend | 挂起协程函数 |
参数修饰符
参数修饰符 | 说明 |
vararg | 变长参数修饰符 |
noinline | 不内联函数修饰符 |
crossinline | 限制Lambda表达式直接非局部return返回 |
具体化类型修饰符
具体化类型修饰符 | 说明 |
reified | 具体化类型参数 |
流程控制语句:
if表达式
- if…else语句是控制程序流程的最基本的形式,其中else是可选的。在Kotlin中,if是一个表达式,即他会返回一个值(跟Scala一样)。代码示例如下:
- if的分支可以是代码块,最后的表达式作为该块的值:
- 例如:
if实现三元表达式:
- if(true) 1 else 0
when表达式:
- 类似于switch…case表达式,when会对所有的分支进行检查直到有一个条件可以被满足
- 在when中也可以使用in和!in来检查一个值是否在一个区间和集合中:
for循环:
- for循环可以对任何提供迭代器(iterator)的对象进行遍历:
- 通过索引遍历一个数组:
- 使用range
- eg:
- while循环:
- break和continue也和C语言和Java中的含义相同
- return 返回:
- 可以和Java一样使用
标签:
- 可以使用标签来控制return,break,continue语句的跳转到的位置
throw表达式
- Kotlin中throw是表达式,他的类型是特殊类型Nothing, 类似与void
- 一般使用Nothing来标记无返回的函数
- 如果把一个throw表达式的值赋值给一个变量,需要显示声明类型为Nothing