一、空安全相关符号
-
?
(可空类型)-
声明变量可为
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 |