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限定 |
|
| 字符串模板 |
|
| 忽略参数 |
|