为了账号安全,请及时绑定邮箱和手机立即绑定

【学习打卡】第13天-C01学习Kotlin

标签:
Kotlin
  • 课程名称:一课掌握Kotlin 突破开发语言瓶颈
  • 章节名称:
    • 第4章:类型初步
      • 4-4智能类型转换
  • 讲师姓名:bennyhuo
  • 时间:2022-08-13 09:39

课程内容

  • Kotlin智能类型转换

    • Java中父类类型变量,可以用子类类型实例赋值,但如果要使用子类方法,需要强转为子类类型,才能运用

    • Kotlin简化上述步骤

      val kotliner: Kotliner = Person("Benny", 20)//Kotliner是子类,继承了父类Person
      if(kotliner is Person) {// 此处的is相当于Java的instanceof
          println((kotliner as Person).name)// as是类型强转的方法
          println(kotliner.name)// 可以智能转换,因为在if语句中已经判断过了
      }
      
      var value: String? = null
      value = "benny"
      if (value != null) {// 此的类型已经从之前的String?自动转换成String
          println(value.length)
      }// 在此if语句内部,value都是String类型,出了此范围就会变回String?类型
      
    • 不能进行智能转换的情况

      var tag: String? = null
      fun main() {
          if (tag != null) {
              println(tag.length)// 此处编译器会报错
              // tag是顶级变量,可能被其他程序或进程修改其值
          }
      }
      
    • 类型的安全转换

      val kotliner: Kotliner = ...
      println((kotliner as? Person)?.name)//强制类型转换如果失败,会返回null
      
  • 为防止空指针异常的建议:

    • 尽可能使用val来声明不可变引用,让程序的含义更加清晰明确
    • 尽可能减少对函数外部变量的访问,也为函数式编程提供基础
    • 必要时创建局部变量指向外部变量,避免因它变化引起程序错误

学习心得

Kotlin在解决Java编码的问题同时,会不会在制造新的问题?
本节回顾

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消