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
}
}
恭喜你,答对了吧!💐💐💐