kotlin中的常见符号

  • ?可空类型
表示这个对象可能为空
var a: String? = "aaa"

  • ?.安全调用符
val len = a?.length //如果 a非空,就返回 a.length ,否则返回 null,这个表达式的类型是 Int? 。

  • ?:Elvis 操作符
对于上面的列子当a不为空时返回正常的值,但当a为空时返回null,显然返回null不能满足我们开发要求,所以可以使用?:操作符
val l = a?.length ?: -1//当a为空时返回-1

  • !!操作符
如果希望直接抛出NPE异常可以用!!操作符
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() 函数
如果你想倒序迭代数字呢?也很简单。你可以使用标准库中定义的 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

  • ::符号
得到类的Class对象
startActivity(Intent(this@KotlinActivity, MainActivity::class.java))

  • @符号
1.限定this的类型
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) }

  • $操作符
【kotlin中的常见符号】字符串可以包含模板表达式,及一小段代码,会求值并把结果包含到字符串中。模板字符串以美元符号$开头,由一个简单的名字构成:
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"

    推荐阅读