Android 之 Kotlin中的符号
一、空安全相关符号
?(可空类型)声明变量可为
null:var name: String? = null // 可空字符串类型
?.(安全调用)对象非空时执行操作,否则返回
null:val length = user?.name?.length // 链式安全调用
?:(Elvis 操作符)左侧为空时返回右侧默认值:
val name = nullableValue ?: "Unknown"println(name)
!!(非空断言)强制断言非空(可能引发
NPE):val risky = nullableValue!!.length // 慎用
二、作用域与引用符号
::(函数/类引用)获取方法或类的引用:
startActivity(Intent(this, MainActivity::class.java)) // 类引用 list.forEach(::println) // 方法引用
.(区间操作符)创建数值区间:
// 闭区间 for (i in 1..10) { /* 1到10 */ } // 半开区间 for (i in 1 until 10) { /* 1到9 */}
.(范围函数)结合
downTo、step控制迭代:for (i in 4 downTo 1 step 2) print(i) // 输出 "42"
三、运算符相关符号
比较与逻辑运算符
==(值相等)、===(引用相等)&&(逻辑与)、||(逻辑或)、!(逻辑非)
索引访问
[]用于集合/数组的访问:val item = list[0] // 调用 list.get(0)
Lambda 表达式符号
->分隔参数与函数体:val sum = { a: Int, b: Int -> a + b }
四、特殊用途符号
@(标签与限定)跳转多层循环或指定
this对象:loop@ for (i in 1..10) { if (i == 5) break@loop // 跳出标签循环) }区分内部类与外部类的
this:class User { inner class State { fun getUser() = this@User } }
$(字符串模板)变量嵌入字符串:
val text = "Name: $name, Age: ${age + 1}"
`(反引号)解决关键字冲突或非法标识符:
fun `when`() { /* 以关键字命名函数 */ }
_(未使用参数)忽略解构或 Lambda 中的参数:
val (id, _, _) = user // 忽略部分解构值 list.forEach { _, value -> println(value) } // 忽略 key
五、关键字系统(部分符号化表达)
类别 | 符号/关键字 | 作用 |
|---|---|---|
类型操作 |
| 安全/非安全类型转换 |
泛型控制 |
| 协变(输出)、逆变(输入) |
函数修饰 |
| 重载运算符(如 |
委托 |
| 属性/接口委托 |
总结:核心符号速查表
符号 | 用途 | 示例场景 |
|---|---|---|
| 安全调用 |
|
| 空值替代 |
|
| 非空断言(慎用) |
|
| 方法/类引用 |
|
| 区间创建 |
|
| 标签跳转/this限定 |
|
| 字符串模板 |
|
| 忽略参数 |
|
