一、Kotlin的内容
1.扩展函数和扩展属性
2.不可空类型和可空类型
使用Kotlin编程比Java更加安全,至少在空指针问题上写起来代码来会更加“开心”。Kotlin中引入了不可空类型与可空类型来明确声明一个变量是否可能为null,同时在编译期通过类型来明确声明一个变量是否可能为null,同时在编译期通过类型是否匹配来检查空指针异常,大大降低了空指针异常出现的概率。同时,Kotlin还提供了Evis操作符、安全调用符等极简的语法格式,使开发者从Java的null防御式编程中被释放出来。
var a = "abc"
a = null //就会报错
声明可空的String类型,可以这样写:
var b:String? = "abc" //todo 声明一个可空的string?类型
如果要调用可空对象的方法那就需要这样调用才行,如果对象为空,就返回null
b?.length //todo 使用安全调用符
3.一等函数支持
在Kotlin中函数是第一等类型:我们可以将函数像值一样传递,函数可以作为另一个函数的返回值。我们通常称之为“一等函数”支持。例如:
//todo 声明一个不可变的List
val list = listOf(1,2,3,4,5,6,7)
//todo 调用filter函数,传入一个Lambda表达式(it%3=0)作为参数[1,2,4,5,7]
list.filter{it%3!=0}
4.智能类型推断
在上面的诸多例子中,可以看到在声明变量的时候并没有显式指定它的类型。Kotlin编译器会自动推断出其类型。
二、编程哲学
Kotlin的定位是一种现代化工业语言:它专注于代码重用和可读性的弹性抽象,以及面向早期错误侦测和明确捕获维护与清理的意图这些问题的静态类型安全性。
Kotlin最重要的使用场景之一是对于一个庞大的Java代码库,其开发者需要一个更棒的语言:你能够将Java和Kotlin*混合,迁移可以是渐进式的,不需要一下子对整个代码库进行改变。
三、Kotlin语法基础
1.变量和标识符
变量标识一个对象的地址,我们称之为标识符。而具体存放的数据占用内存的大小和存放的形式则由其类型来决定。
在Kotlin中,所有的变量类型都是引用类型。Kotlin的变量分为val(不可变)和var(可变的)。可以简单理解为:
val是可读的,仅能一次赋值,后面就不能被重复赋值
var是可写的,在它生命周期中可以被多次赋值。
只要可以,尽量在Kotlin中首选使用val不变值。因为在程序中大部分只需要使用不可变的变量,而使用val变量可以带来可预测的行为和线程安全等优点。
2.关键字与修饰符
通常情况下,编程语言中都有一些具有特殊意义的标识符是不能用作变量名,这些具有特殊意义的标识符叫做关键字,编译器需要针对这些关键字进行词法分析,这是编译器对源码进行编译的基础步骤之一。
Kotlin中的修饰符关键字主要分为:类修饰符、成员修饰符、访问权限修饰符、协变逆变修饰符、函数修饰符、属性修饰符、参数修饰符、具体化类型修饰符等。
abstract 抽象类
final 不可被继承final类
enum 枚举类
open 可继承open类
annotaion 注解类
scaled 密封类
data 数据类
成员修饰符
override 重写函数方法
open 声明函数可被重写
final 声明函数不可被重写
abstract 声明函数为抽象函数