- $
println("itemB:$itemB")
//字符串模板
var userInfo = "name:${user.name}, age:$age"
- ?
表示对象可能为空
//在变量类型后面加上问号,代表该变量是可空变量
var name: String? = "zhangsan"
/**
* 如果str不能转为Int类型,则返回null
*/
fun parseInt(str: String): Int? {
// (代码略)
}
b?.length //如果 b非空,就返回 b.length ,否则返回 null,这个表达式的类型是 Int? 。
- ?:
//如果r非空,我使用它;否则使⽤某个非空的值 x ”:
val l = b?.length ?: -1
- !!
//返回一个非空的 b 值 或者如果 b 为空,就会抛出一个 NPE 异常
val l = b!!.length
- ==,===
==判断值是否相等,===判断值及引用是否完全相等。
- ..
Kotlin中有区间的概念,区间表达式由具有操作符形式 .. 的 rangeTo 函数辅以 in 和 !in 形成。 区间是为任何可比较类型定义的,但对于整型原生类型,它有一个优化的实现。
if (i in 1..10) { // 等同于 1 <= i && i <= 10
println(i)
}
- _
data class Book(var id: Int, var name: String)
val book = Book(1, "英语")
val (id, _) = book
- ::
获取类的属性,方法 - @
//1、限定this的类型
class User {
inner class State{
fun getUser(): User{
//返回User
return this@User
}
fun getState(): State{
//返回State
return this@State
}
}
}
//2、作为标签
loop@ for (itemA in arraysA) {
var i : Int = 0
for (itemB in arraysB) {
i++
if (itemB > 2) {
break@loop
}
println("itemB:$itemB")
}
}
参考文献: https://blog.csdn.net/zxc123e/article/details/73368781