‌Kotlin中的?.和!!主要区别

打印 上一主题 下一主题

主题 1616|帖子 1616|积分 4848

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
目录
1、?.和!!先容
2、使用场景和最佳实践
3、代码示例和表明


1、?.和!!先容

Kotlin中的?.和!!主要区别在于它们对空指针的处置惩罚方式。


  • ?.(安全调用操作符)‌:当变量可能为null时,使用?.可以安全地调用其方法或属性。如果变量为null,则不执行调用,直接返回null。比方:
    1. val name: String? = null
    2. println(name?.length) // 输出 null,因为 name 为 null
    复制代码
    这种方式不会抛出空指针非常,而是安全地处置惩罚null值‌。
  • !!(非空断言操作符)‌:当变量可能为null时,使用!!会逼迫执行调用,如果变量为null,则会抛出空指针非常。比方:
  1. val list: ArrayList<String>? = null
  2. println(list!!.size) // 如果 list 为 null,则会抛出 NullPointerException
复制代码
这种方式相当于在Java中的断言操作,即如果变量为null,则抛出非常‌。
2、使用场景和最佳实践



  • 使用?.‌:当你须要安全地处置惩罚可能为null的变量时,使用?.可以避免空指针非常,确保代码的健壮性。比方在UI渲染中,避免因数据未准备好而导致的瓦解。
  • 使用!!‌:当你确信变量不会为null,大概须要在变量为null时抛出非常以提示开发者时,可以使用!!。这种方式适用于内部逻辑处置惩罚,确保逻辑的准确性。
3、代码示例和表明



  • 安全调用(?.)‌:
  1. val name: String? = null
  2. println(name?.length) // 输出 null,因为 name 为 null
复制代码


  • 非空断言(!!)‌:
  1. val list: ArrayList<String>? = null
  2. println(list!!.size) //如果 list 为 null,则会抛出 NullPointerException
复制代码




免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

卖不甜枣

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表