美文网首页
kotlin(七):基本语法之常见符号、条件表达式

kotlin(七):基本语法之常见符号、条件表达式

作者: 小川君 | 来源:发表于2018-09-09 01:05 被阅读0次
    常见符号
    • $
      直接引用变量,多用于输出日志中
      fun person(age: Int,name: String){
            println("age: $age   name:$name")
        }
    
    • ? 表示这个对象可能为空

    var name: String? = null表示name可能为空,一般赋值null的时候,会强制加上,当然也可以使用延迟加载
    name?.toString()如果 name非空,就返回 name.toString ,否则返回 null。

    • !! 与?不同的是,如果一个对象为空,使用?的话,会直接返回null,而如果使用!!的话,怎会报空指针异常,所以!!还是少用比较好
    var test: String? = null
       fun test(){
           println(test?.toString())
           println("test  ${test!!.toString()}")
       }
       
    输出为:
    3820-3820/com.chuan.jun I/System.out: null
    Unable to start activity ComponentInfo{com.chuan.jun/com.chuan.jun.MainActivity}: kotlin.KotlinNullPointerException
    
    • .. 表示区间
    if (i in 1..10) { // 等同于 1 <= i && i <= 10
       println(i)
    }
    
    for (i in 1..4) print(i) // 输出“1234”
    
    • :: 意为将当前的某个函数/表达式以变量的形式传递给另一个函数
    
    //调用函数
    fun test(){
       test1(this::person)
    }
    //需要被传递的函数
    fun person(age: Int,name: String){
       println(age.toString() + name)
    }
    //接收函数/表达式的函数
    fun test1(str:(Int,String) -> Unit){
       str(10,"chuan")
    }
    

    调用函数test,并将成员函数person以变量的形式传递给test1,test1负责接收一个入参为Int,String返回值类型为空的表达式/函数,并为此表达式/函数进行赋值操作,然后person函数接收到赋值,并打印日志,可以看出真正调用person的地方是test1里面,而在test里面则是将person函数当做一个变量传递给test1.
    输出为:4593-4593/? I/System.out: 10chuan

    ::用的多的场景就是在获取某个类的java类对象时 startActivity(Intent(this, MainActivity::class.java))

    条件表达式
    • if/else 略
    • when 相当于switch/case,相比于switch,when的判断分支可以是任何类型,或具体的值,或条件表达式等等.
      fun person(age: Int,name: String){
           when(age){
               1 -> println("age == 1")
               2,3 -> println("age 等于2 或等于3")
               in 5..10 -> println("age 位于区间5-10之间")
               else -> println("所有判断分支都不对")
           }
       }
       
       上面的判断很类似于switch/case 不过判断分支却是比switch/case要灵活很多 
       
       fun  test(age: Int){
           var result = when{
               age > 10 -> age
               age == 10 -> 10
               else -> {
                   0
               }
           }
       }
    

    上面则是将when当做一个表达式,并将返回赋予result

    • for 与java中的for循环不同,
    for(a in 1..10){
                // for循环的初始化 更依赖于区间  
    }
    

    因为在kotlin中有其他的含义,所以在for循环中就取消了的含义

    for(item in items){
        
    }
    

    通过in来替换掉原先冒号所起的作用

    相关文章

      网友评论

          本文标题:kotlin(七):基本语法之常见符号、条件表达式

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