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