「这是我参与11月更文挑战的第27天,活动详情查看:2021最后一次更文挑战」
一、基础语法
1. 定义变量
var 和 val 都可以定义变量
- var是一个可变变量
- val是一个只读变量
2. 函数
- 声明:函数声明关键字为:fun
- 格式为:可见性修饰符 fun 函数名(参数名 :类型,...) : 返回值{}
fun method(){
. . .
}
3. NULL检查机制
Kotlin的空安全设计对于声明可为空的参数,不会报NullPointerException,在使用时要进行空判断处理:
- ? 当某个变量的值可以为 null 的时候,必须在声明处的类型后添加 ? 来标识该引用可为空
var str : String ? = null
- !! 非空断言,如果值为 null 就抛出 NullPointerException 空指针异常
- ?. 空判断,如果不为空就执行方法,如果为空就返回 null
- ?: null 合并运算符,设置当检查结果为空的时候的返回值
- as? 安全转换运算符,尝试把值转换成给定的类型,如果类型不合适就返回 null
- let函数 只有左侧表达式不为空的时候才会调用
4. 区间
开区间
var range = 1..10 //[1,10]
左闭右开
var range = 1 until 10 //[1,10)
倒叙
var range = 10 downTo 1 //[10,9,8,...,1]
步长
var range = 1..10 step 2 //[1,3,5,7,9]
包含
if(2 in range){...}
步长
if(2 !in range){...}
5. 条件与控制
if
if 语句包含一个布尔表达式和一条或多条语句
var value : Int
if (a < b) {
value = a
} else {
value = b
}
when
将它的参数和所有的分支条件顺序比较,直到某个分支满足条件
var value : Int
when(a){
1 -> value = 1
2 -> value = 2
}
5. 类和继承
类的声明
class Demo {
...
}
构造函数
默认情况下,所有的构造函数都是公开的,有效的,它们可以在任何地方都可见(即一个内部类的构造函数在同一个模块中可见)
class Demo constructor(name:String) {
...
}
类的创建
var demo = Demo() //无参
var demo = Demo("Hello") //有一个构造参数
抽象类
一个类或一些成员可能被声明成 abstract ,一个抽象方法在它的类中没有实现方法