kotlin中的常见符号
- ?可空类型
var a: String? = "aaa"
- ?.安全调用符
val len = a?.length //如果 a非空,就返回 a.length ,否则返回 null,这个表达式的类型是 Int? 。
- ?:Elvis 操作符
val l = a?.length ?: -1//当a为空时返回-1
- !!操作符
val n1 = a!!.length
- ==号与===号
val c: Int = 128
val a1:Int? = c
val a2:Int? = c
println(a1 == a2)//true
print(a1 === a2)//true
- ..区间以及 in 和 !in 操作符
if (i in 1..10) { // 等价于 i >= 1 && i <= 10或者i in [1, 10]
println(i)
}
//使用until函数,创建一个不包括其结束元素的区间
for (i in 1 until 10) {// i>=1 && i < 10 或者 i in [1, 10) 排除了 10
println(i)
}
if (i !in 1..10) { // i < 1 || i > 10
println(i)
}
- downTo() 函数
for (i in 5 downTo 1)
print(i) // 输出“54321”
- step()步长
for (i in 1..5 step 2)
print(i) // 输出“135”for (i in 5 downTo 1 step 2)
print(i) // 输出“531”
- _(下划线)
data class Book(var id: Int, var name: String)
上面的示例中,Book声明了 id,name两个变量。解构时如果只需要id这一个变量时,可以这么做:
val book = Book(1, "英语")
val (id, _) = book
- ::符号
startActivity(Intent(this@KotlinActivity, MainActivity::class.java))
- @符号
class User {
inner class State{
fun getUser(): User{
//返回User
return this@User
}
fun getState(): State{
//返回State
return this@State
}
}
}
2.跳出双层for循环
loop@ for (itemA in arraysA) {
var i : Int = 0
for (itemB in arraysB) {
i++
if (itemB > 2) {
break@loop
}
println("itemB:$itemB")
}
}
3.命名函数自定义标签
fun fun_run(){
run {
println("lambda")
}
var i: Int = run {
return@run 1
}
println("$i")
//匿名函数可以通过自定义标签进行跳转和返回
i = run (outer@{
return@outer 2
})
println(i)
}
- $操作符
val key = 5
val str1 = "the key is $key"//输出:the key is 5val s = "abc"
val str2 = "$s.length is ${s.length}"//输出:abc.length is 3var args = arrayOf("Cat", "Dog", "Rabbit")
print("Hello ${args[0]}")//输出:Hello Cat
- 三个双引号 三引号的形式用来输入多行文本,也就是说在三引号之间输入的内容将被原样保留,之中的单号和双引号不用转义,其中的不可见字符比如/n和/t都会被保留。
val str = """
one
two
"""
//等价于
val str = "one\ntwo"
val str ="one" +"\n"+"two"
推荐阅读
- 热闹中的孤独
- JS中的各种宽高度定义及其应用
- 我眼中的佛系经纪人
- 《魔法科高中的劣等生》第26卷(Invasion篇)发售
- Android中的AES加密-下
- 放下心中的偶像包袱吧
- C语言字符函数中的isalnum()和iscntrl()你都知道吗
- C语言浮点函数中的modf和fmod详解
- C语言中的时间函数clock()和time()你都了解吗
- 如何在Mac中的文件选择框中打开系统隐藏文件夹