Kotlin中的可空类型,2021Android笔试题总结

本文总结了Kotlin中的可空类型特性,强调了非空变量的初始化要求和可空变量的安全操作。讨论了Android开发中遇到的问题,并提醒开发者避免程序因null值引发的异常。同时,提供了Android工程师技能提升的建议,包括学习路线、源码分析和面试真题资源。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

声明一个非空变量时,如果在定义时未初始化,则必须在后面初始化,且不能被赋值为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知识点、常见算法题汇总。)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值