kotlin中的常见符号

作者: 小_马_哥 | 来源:发表于2018-07-12 16:17 被阅读0次
    • ?可空类型

    表示这个对象可能为空

    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)
    }
    
    • $操作符

    字符串可以包含模板表达式,及一小段代码,会求值并把结果包含到字符串中。模板字符串以美元符号$开头,由一个简单的名字构成:

    val key = 5
    val str1 = "the key is $key"//输出:the key is 5
            
    val s = "abc"
    val str2 = "$s.length is ${s.length}"//输出:abc.length is 3
    
    var 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"
    

    相关文章

      网友评论

        本文标题:kotlin中的常见符号

        本文链接:https://www.haomeiwen.com/subject/gxblpftx.html