1. Kotlin 语言特点
1. 全面支持 Lambda表达式
2. 数据类(Data classes)
3. 函数字面量和内联函数
4. 函数拓展
5. 空安全
6. 智能转换
7. 字符串模板
8. 主构造函数
9. 类委托
10. 类型推断
11. 单例
12. 声明点变量
13. 区间表达式
2. Kotlin 函数加强
2.1 函数格式
fun 函数名(参数名:参数类型):返回值类型 {
}
3. 字符串模板
fun writeDairy(placeName: String): String
{
var story = """
你好,我要去 ${placeName},${placeName.length}个大字
"""
return story
}
4. 字符串比较
4.1 正常比较
var str1 = "story"
var str2 = "stroy"
str1 == str2, 进行的是 值对比,非内存地址对比,等价与 str1.equal(str2)
4.2 忽略大小写比较
String?.equals(other: String?, ignoreCase: Boolean = false)
var str1 = "hello"
var str2 = "world"
// 忽略大小写
println(str1.equals(str2, true))
5. Kotlin的空值处理
5.1 null在Kotlin中的意义
null也是值,表示没有东西,没有数据
5.2 Kotlin中的 ? 和 !!
? 表示当前对象可以为空,即可以 = null, !! 表示当前对象不为空的情况下执行
// 接收一个参数,参数是非空的String类型
e.g. fun heart(str: String):String {
return "热" + str
}
// 加上问号代表的是参数可以为空
fun writeDairy(placeName: String?): String {}
6. When值表达式
跟java的 switch表达式差不多
fun gradeStudent(score: Int) :Unit {
when (score) {
10 -> println("满分")
9 -> println("干的不错")
else -> println("需要加油")
}
}
7. Loop 和 Range
7.1 区间
// 代表从1 到 100 的数组
var nums = 1 .. 100 // [1, 100] 前后都是闭区间
var nums = 1 until 100 // [1, 100) 前闭后开
7.2 步长
for (num1 in nums step 2) { // 以步长为2 打印数据
println("num = ${num1}")
}
7.3 数组倒序 reversed()
var num3 = nums.reversed() // 数组倒序
7.4 数组计数 count()
nums.count()// 计算数组中的数据个数
8. List 和 Map
8.1 List
创建一个List
var lists = listof("张三", "李四", "王五", "六六")
var sonList = listOf<Son>(s1, s2, s3)
遍历一个list
for (item in lists) {
println("$item")
}
for ((i, e) in lists.withIndex()) { // 0, 张三 同时打印下标和 内容
println("$i, $e")
}
8.2 Map
声明一个map,并put数据
var map = TreeMap<String, String>()
map["hao"] = "good"
map["buhao"] = "not good"
输出key = "hao" 对应的value,不存在则输出null
print(map["hao"])
遍历一个map
// 方法一
map.forEach {
println("key = ${it.key}, value = ${it.value}")
}
// 方法二
for ((key,value) in map){
println("key = $key, value = $value")
}