声明一个非空变量时,如果在定义时未初始化,则必须在后面初始化,且不能被赋值为null
2、声明一个可为空变量
// 2、声明一个可为空的变量 by xiaojin on 7/24/21 9:38 PM
var tel:String?
init {
// 可被赋值为null by xiaojin on 7/24/21 9:40 PM
tel = null
// 因为call方法需要的是String类型,但是tel其实是String?类型,所以需要用!!进行非空断言by xiaojin on 7/24/21 9:42 PM
call(tel!!)
}
fun call(num:String){
println("对 ${num} 拨号中.....")
}
一旦我们这么做了,会导致程序崩溃,即对一个值为null的变量使用了非空断言时会抛出异常
Exception in thread "main" kotlin.KotlinNullPointerException
at com.example.firstkotlin.koltin.NullType.<init>(NullType.kt:30)
at com.example.firstkotlin.koltin.NullTypeKt.main(NullType.kt:45)
at com.example.firstkotlin.koltin.NullTypeKt.main(NullType.kt)
所以我们通常建议使用下面的方法
// 2、声明一个可为空的变量 by xiaojin on 7/24/21 9:38 PM
var tel:String?
init {
// 即可被赋值为null by xiaojin on 7/24/21 9:40 PM
tel = null
// 也可被赋值为具体的String值 by xiaojin on 7/24/21 9:40 PM
// tel = "1234567890"
// 我们通常不建议使用非空断言,因为它非常危险,一旦变量为null,则会抛出异常 by xiaojin on 7/24/21 9:44 PM
call(tel ?: "0")
}
fun call(num:String){
println("对 ${num} 拨号中.....")
}
此时输出位:
对 0 拨号中.....
尾声
对于很多初中级Android工程师而言,想要提升技能,往往是自己摸索成长,不成体系的学习效果低效漫长且无助。 整理的这些架构技术希望对Android开发的朋友们有所参考以及少走弯路,本文的重点是你有没有收获与成长,其余的都不重要,希望读者们能谨记这一点。
最后想要拿高薪实现技术提升薪水得到质的飞跃。最快捷的方式,就是有人可以带着你一起分析,这样学习起来最为高效,所以为了大家能够顺利进阶中高级、架构师,我特地为大家准备了一套高手学习的源码和框架视频等精品Android架构师教程,保证你学了以后保证薪资上升一个台阶。
当你有了学习线路,学习哪些内容,也知道以后的路怎么走了,理论看多了总要实践的。
CodeChina开源项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》
进阶学习视频
附上:我们之前因为秋招收集的二十套一二线互联网公司Android面试真题 (含BAT、小米、华为、美团、滴滴)和我自己整理Android复习笔记(包含Android基础知识点、Android扩展知识点、Android源码解析、设计模式汇总、Gradle知识点、常见算法题汇总。)
套一二线互联网公司Android面试真题** (含BAT、小米、华为、美团、滴滴)和我自己整理Android复习笔记(包含Android基础知识点、Android扩展知识点、Android源码解析、设计模式汇总、Gradle知识点、常见算法题汇总。)