变量声明
var:用于值不改变的变量,使用val声明的变量无法重新赋值
val:用于值可以改变的变量
变量声明格式
var/val data(变量名称) : Int(变量类型)
Kotlin基本数据类:
Int、Byte、Short、Long、Float、Double
Kotlin类型推断
Kotlin编译器可以根据所赋值的类型来推断其类型
如val str = “data”
Null安全
Kotlin变量不能持有Null值,如果要使变量持有Null,它必须是可为Null类型,可以在变量类型后面加上?后缀,将变量指定为可为Null。如:
Val languageName:String?=null
?表示可为空
!!表示可能为空的值不为空(非Null断言符)
?:该运算符是处理变量为空的情况
条件语句
If else if else
条件语句可作为返回值返回给变量
Val answerString:String = if() {“…”} else if(){“…”} else {“…”}
When类比java的switch,但是判定条件比java灵活
Val answerString = when {
Count == 42 ->””
Couint >= 35 -> “”
Else -> “”
}
函数
使用fun关键字声明,例如
fun generateAnswerString() : String {
val answerString = “”
return answerString
}
带参数的函数
fun generateAnswerString(a : String) :String {
…
}
匿名函数
val stringLenthFunc: (String)->Int = {input->
input.length
}
高阶函数:一个函数可以将另一个函数当做参数(类似java中的回调接口)
fun stringMapper(str: String, mapper:(String)->Int):Int {
return mapper(str)
}
类(使用class关键字来定义)
class Car
属性(通过val、var关键字来定义)
Val data : Int = 0
Getter与setter
默认情况下kotlin的属性都自带上述两个方法
如果需要对该属性的获取与赋值进行控制,则需要重写对应方法
类函数和封装
Private关键字
数据类型和单例类
数据类只处理数据相关,与java bean类似,通常需要实现其get、set、hashCode、equals、toString等方法
data class UserBean(val id: String, val name: String, val pwd : String)
单例类
object Singleton {}
Lambda
函数式API
匿名内部类需要使用object
Thread(object: Runnable {
Override fun run() {
Println(“test”)
}
}).start()
Null判断
let函数
let不是关键字,而是一个函数,提供了函数式API的编程接口,会将调用者作为参数传递到lambda表达式,调用之后会立马执行lambda表达式的逻辑
obj.let {it -> //it就是obj
}
内嵌表达式
var name = “a”
var age = 20
println(“my name is $name, age is $age”)
使用${}可执行更复杂的操作
println(“${if (1 < 2) “a” else “b”}. test”)