美文网首页Android
Kotlin的空类型与智能类型转化

Kotlin的空类型与智能类型转化

作者: 光明程辉 | 来源:发表于2020-05-02 11:01 被阅读0次

    如果你学过swift不得不说,Kotlin某些方面和它极为相似。请往下面看吧!
    首先它可以分2大类。
    任意类型都可以分为 可空 和 不可空 类型。

    1、空类型   nullable 类型
    2、不可空 notNull  类型
    

    空类型

    - val notNull: String = null       // 错误,不能为空
    - val nullable: String? = null         // 正确,可以为空
    - notNull.length                   // 正确,不为空的值可以直接使用
    - nullable.length                  // 错误,可能为空,不能直获取长度
    - nullable!!.length                // 正确,强制认定 nullable 不为空
    - nullable?.length                 // 正确,若nullable 为空,返回 空
    

    可以发现,? 和 !! ,这个就是它的强大地方了,如过是Java的话,你会发现源码里面会有一堆的判断,是否为空、异常什么的。而在kotlin里面,这个只需要使用 ?和 !! 处理就好了,事实上它帮我们做了很多东西。此外,这样做,也程序更加的安全!

    例如:

    注释:
    //  "?" 表示可定义空字符串,
    //“?”可以理解为 “else” ,当 testString有值时,就是“Hello”,否则 为null
    
    var testString: String? = "Hello"   
    
    !!
    testString!!.length  
    注释:
    // 表示告诉编译器 “我已经充分了解”,强制认证了testString 不为空,请执行吧,这也就体现了安全。
    
    
    温故知新:请思考🤔:

    问题:Kotlin 中的构造方法的写法?

    class Person(username: String, age: Int) {
         private val username:String = username
         private val age:Int = age
    }
    

    进一步提问🤔:

    Kotlin 初始化执行语句不是必须放在init 块中,如果不写 init, 可以在定义属性时直接将构造器中的形参赋值给它!

    class Person(username: String, age: Int) {
         private val username:String = username
         private val age:Int = age
          
          {
                this.username = usernam
                this.age = age
          }
    }
    
    

    恭喜你,答对了吧!💐💐💐

    相关文章

      网友评论

        本文标题:Kotlin的空类型与智能类型转化

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