Android

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

2020-05-02  本文已影响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
      }
}

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

上一篇下一篇

猜你喜欢

热点阅读