当前位置: 首页 > news >正文

Kotlin 基本介绍(一)

导读大纲

      • 1.1.1 Kotlin 是安全的
      • 1.1.2 Kotlin 具有互操作性
      • 1.1.3 什么是 idiomatic Kotlin?

1.1.1 Kotlin 是安全的

  1. 一般来说,当我们说一种编程语言是安全

    • 我们指的是它的设计可以防止程序中出现某些类型的错误
    • 当然,这并不是绝对的;没有一种语言防止所有可能出现的错误
  2. 此外,防止错误通常是有代价

    • 你需要向编译器提供更多关于程序预期运行的信息
      1. 这样编译器才能验证这些信息是否与程序的运行相符
    • 因此,您需要在所获得的安全级别
      1. 为添加更详细注释而损失的生产率之间做出权衡
  3. 在 JVM 上运行已经提供许多安全保障

    • 例如,内存安全、防止缓冲区溢出
      1. 以及其他因不正确使用动态分配的内存而导致的问题
    • 作为 JVM 上的静态类型语言,Kotlin 还能确保应用程序的类型安全
    • 此外,Kotlin 还能更进一步:它能轻松定义只读变量(通过 val 关键字)
      1. 并快速将它们归类到不可变(data)类
      2. 从而为多线程应用程序提供额外的安全性
  4. 除此之外,Kotlin还会在编译时进行检查,以防止运行时出现错误

    • 最重要的是,Kotlin 致力于消除程序中的 NullPointerException
    • Kotlin 的类型系统会可以跟踪为空和不能为空的值
      1. 禁止在运行时导致 NullPointerException 异常的操作
    • 为此所需的额外成本极低
      1. 将一个类型标记为可空只需一个字符,即结尾的问号
    • 作为补充,Kotlin 提供许多方便的方法来处理空数据
      1. 这大大有助于避免应用程序崩溃
fun main() {var s: String? = null    // 可以为空var s2: String = ""      // 不能为空println(s.length)        // 不会编译, 免于崩溃println(s2.length)       // 将按预期运行
}
  1. Kotlin 还能帮助避免另一种异常,那就是**“类转换异常”**
    • 当你在未检查对象类型是否正确的情况下
      1. 将其转换到某个类型时就会发生这种异常
    • Kotlin 将检查和转换合并为单个操作(智能转换)
      1. 这意味着一旦你检查类型,就可以引用该类型的成员
        • 无需任何额外的转换、重新声明或检查
    • <1> 在本例中,编译器对值变量进行类型检查,该变量可能是 Any 类型
      1. 编译器知道,在条件的真分支中,value 必定是 String 类型
        • 因此它可以安全地允许使用该类型的方法(即所谓的smart-cast)
      2. 当然你可以手动执行转换(value as String)
        • 可以但是没必要,并不符合idiomatic Kotlin
fun modify(value: Any) {                       // <1>if (value is String) {                     // <1>// val value = value as Stringprintln(value.uppercase())             // <1>}
}

1.1.2 Kotlin 具有互操作性

  1. 关于互操作性,首先关心的可能是:"我能使用现有的库吗?

    • 对于Kotlin, 答案是 “是的,绝对可以”
    • 无论库需要哪种 API,您都可以在 Kotlin 中使用它们
    • 您可以调用 Java 方法、扩展 Java 类和实现接口
      1. 将 Java 注解应用到 Kotlin 类等等
  2. 与其他一些 JVM 语言不同, Kotlin 在互操作性方面更进一步

    • 使得从 Java 调用 Kotlin 代码也毫不费力,无需任何技巧
    • Kotlin 类和方法可以像普通 Java 类和方法一样被调用
      1. 这样,您就可以在项目的任何地方灵活地混合使用Java和Kotlin代码
    • 当您开始在 Java 项目中采用 Kotlin
      1. 您可以在代码库中的任何一个类运行Java到 Kotlin 的转换器
      2. 代码的其余部分将继续编译和运行, 无需做任何修改
  3. Kotlin 注重互操作性的另一个方面尽可能多地使用现有的 Java 库

    • 例如,Kotlin 的集合几乎完全依赖于 Java 标准库类
      1. 并为它们扩展额外的功能,以便在 Kotlin 中更方便地使用
    • 这意味着当你从 Kotlin 调用 Java API
      1. 永远不需要包装或转换对象,反之亦然
    • Kotlin 提供的所有丰富 API 在运行时无需任何成本
  4. Kotlin 工具还为跨语言项目提供全面支持

    • 它可以编译任意混合的 Java 和 Kotlin 源文件
      1. 无论它们如何相互依赖
    • IDEA和Android Studio中的IDE功能也能跨语言工作,允许执行以下操作
      1. 在 Java 和 Kotlin 源文件之间自由导航
      2. 调试混合语言项目,并在不同语言编写的代码之间进行切换
      3. 重构Java方法,并正确更新它们在Kotlin代码中的使用,反之亦然

1.1.3 什么是 idiomatic Kotlin?

  1. 在讨论 Kotlin 代码时,有一个短语经常出现: idiomatic Kotlin

  2. 简单地说,idiomatic Kotlin就是母语为 Kotlin 的用户如何编写代码

    • 在适当的地方使用语言特性和语法糖
    • 这样的代码由惯用语组成可识别的结构(模式)
      1. 以"Kotlin 方式"解决试图解决的问题
  3. 惯用化代码符合社区普遍接受的编程风格,并遵循语言设计者的建议

    • 与其他技能一样,学习编写惯用的 Kotlin 代码需要时间和实践
    • 在阅读代码示例并编写自己的代码的过程中
      1. 逐渐对惯用的 Kotlin 代码的外观和感觉形成直觉
      2. 并获得在自己的代码中独立应用这些知识的能力
http://www.lryc.cn/news/444326.html

相关文章:

  • Cocos Creator发布Moloco平台试玩广告(PlayableAd)
  • 七种修复错误:由于找不到msvcr110.dll 无法继续执行的方法
  • Python模拟鼠标轨迹[Python]
  • Ubuntu搭建java开发环境
  • 新能源汽车知识点集萃
  • c++234继承
  • Axios 封装网络请求
  • LeetCode 面试经典150题 190.颠倒二进制位
  • vulhub搭建漏洞环境docker-compose up -d命令执行报错以及解决方法汇总
  • C++ 简介
  • shardingjdbc分库分表原理
  • C++泛型编程:模版
  • 一道涉及 Go 中的并发安全和数据竞态(Race Condition)控制的难题
  • 如何降低H5商城系统的开发成本
  • 为什么越来越多的网工运维转行网络安全?_idc运维转网络安全工程师_系统运维转行网安
  • 【TabBar嵌套Navigation案例-产品推荐页面-UICollectionView-结合xib使用 Objective-C语言】
  • java.nio.ByteBuffer的 capacity, limit, position, mark
  • 握手传输 状态机序列检测(记忆科技笔试题)_2024年9月2日
  • 电商跨境电商商城系统/网上商城接口/电商数据接口详情
  • openFrameworks_如何使用ofxXmlSettings和ofxGui来创建识别界面
  • 180多个GIS地理空间定义术语中英文对照配图
  • Vue(14)——组合式API①
  • 【图像检索】基于颜色模型的图像内容检索,matlab实现
  • 看过来——量子计算中一个神奇符号的解释
  • 传输层 IV(TCP协议——流量控制、拥塞控制)【★★★★】
  • Java设计模式全面解析
  • spring全家桶使用教程
  • REST-系统架构师(六十九)
  • SAP B1 营销单据 - 复制从复制到总结
  • css设置overflow:hiden行内元素会发生偏移的现象