kotlinAndroid开发框架以及Kotlin语言java

kotlin中的常见符号

2018-07-12  本文已影响0人  小_马_哥

表示这个对象可能为空

var a: String? = "aaa"
val len = a?.length //如果 a非空,就返回 a.length ,否则返回 null,这个表达式的类型是 Int? 。

对于上面的列子当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
        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”

在上面的例子中我们也可以指定步长

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
val str = """ 
    one
    two
        """
//等价于          
val str = "one\ntwo"
val str =  "one" +"\n"+"two"
上一篇 下一篇

猜你喜欢

热点阅读