Kotlin 基本介绍(二)

server/2024/9/24 3:46:24/

导读大纲

    • 1.1 使用 Kotlin 工具
      • 1.1.1 设置和运行 Kotlin 代码
        • JAVA 到 KOTLIN 转换器
      • 1.1.2 编译 Kotlin 代码
        • KOTLIN/JVM 的编译过程

1.1 使用 Kotlin 工具

  1. 可以在线运行小片段或安装集成开发环境

1.1.1 设置和运行 Kotlin 代码

  1. 使用 IntelliJ IDEA 或 Android Studio 可以获得最佳体验

    • 我们在此提供基本信息,但 Kotlin 网站上有最新的最佳教程
    • 关于设置环境
  2. 使用 KOTLIN 在线游戏场,无需安装即可试用 KOTLIN

    • 尝试Kotlin的最简单方法是无需安装或配置
    • 在那里您可以编写、编译和运行小型 Kotlin 程序
    • 此外,Kotlin 文档
      1. 也有几个交互式示例,可以在浏览器中直接运行
    • 这些都是运行简短 Kotlin 代码片段的最快方法
      1. 但它们提供的帮助和指导较少
    • 这是一个非常简约的开发环境,缺少一些方便的功能,比如自动完成或检查功能
      1. 这些功能可以告诉你如何改进 Kotlin 代码
    • 网页版还不支持通过标准输入流进行用户交互
      1. 不支持处理文件和目录
  3. Kotlin 的 IntelliJ IDEA 插件是与 Kotlin 语言同步开发

    • 它是一个功能齐全的 Kotlin 开发环境
    • 它成熟稳定,为 Kotlin 开发提供一套完整的工具
    • IntelliJ IDEA和Android Studio开箱即包含Kotlin插件,因此无需额外设置
    • 在 IntelliJ IDEA 中,在"新建项目"对话框中选择 Kotlin,然后就可以开始
    • 在 Android Studio 中,只需创建一个新项目,就能立即开始编写 Kotlin
    • Kotlin/JVM 入门
JAVA 到 KOTLIN 转换器
  1. 快速掌握一门新语言绝非易事,幸运的是,我们创建一个不错的小捷径

    • 让您可以利用现有的 Java 知识加快学习和采用速度
    • 这个工具就是 Java 到 Kotlin 的自动转换器
  2. 在您开始学习 Kotlin 时,转换器可以在您不记得确切语法时帮助表达某些内容

    • 你可以用 Java 编写相应的代码段,然后将其粘贴到 Kotlin 文件
      1. 转换器会自动将代码翻译成 Kotlin
    • 这样做的结果并不总是最通俗易懂的,但它将是有效的代码
      1. 您将能在任务中取得进展
  3. 该转换器还非常适合将 Kotlin 引入现有的 Java 项目

    • 当您需要编写一个新类时,可以从一开始就使用 Kotlin
    • 但是,如果您需要对现有类进行重大修改,可能也希望在此过程中使用Kotlin
    • 这就是转换器发挥作用的地方
      1. 可以先将类转换为 Kotlin
      2. 然后使用现代语言的所有优势添加改动
  4. 在 IntelliJ IDEA 中使用转换器非常简单

    • 既可以复制 Java 代码片段将其粘贴到 Kotlin 文件
    • 也可以在需要转换整个文件
      1. 执行"Convert Java File to Kotlin File"操作

1.1.2 编译 Kotlin 代码

  1. Kotlin 是一种编译语言

    • 这意味着在运行 Kotlin 代码之前,需要对其进行编译
  2. Kotlin 代码可以编译成不同的目标:

    • 在 JVM 上运行的 JVM 字节码(存储在 .class 文件中)
    • 进一步转换 JVM 字节码在 Android 上运行
    • 原生目标,在不同操作系统上本地运行
    • JavaScript(和 WebAssembly),在浏览器中运行
  3. 对于 Kotlin 编译器来说,生成的 JVM 字节码

    • 在 JVM 上运行还是进一步转换后在 Android 上运行不重要
    • 安卓运行时(ART)将 JVM 字节码转换为 Dex 字节码并运行
      1. 在Android上如何运行
    • 由于本系列教程的主要目标是 Kotlin/JVM
      1. 因此让我们更详细地讨论编译过程是如何工作
KOTLIN/JVM 的编译过程
  1. Kotlin 源代码通常存储在扩展名为 .kt 的文件

    • 为 JVM 目标编译 Kotlin 代码时,编译器会分析源代码并生成 .class
      1. 就像 Java 编译器所做的那样
    • 生成的 .class 文件会被打包
      1. 然后使用您正在处理的应用程序类型的标准程序来执行
  2. 在最简单的情况

    • 使用 kotlinc 命令从命令行编译代码
      1. kotlinc <source file or directory> -include-runtime -d <jar name>
    • 使用 java 命令执行代码
      1. java -jar <jar name>
  3. JVM 可以运行根据 Kotlin 代码编译的 .class 文件

    • 无需知道这些文件最初是用 Java 还是 Kotlin 编写
    • 然而,Kotlin 内置类及其 API 与 Java 中的不同
    • 为了正确运行编译后的代码
      1. JVM 需要依赖额外的信息: Kotlin 运行时库
    • 从命令行编译代码时,我们显式调用 -include-runtime
      1. 将运行时库包含到生成的 JAR 文件
  4. Kotlin 运行时库必须与应用程序一起发布

    • 其中包含 Kotlin 基本类(如 Int 和 String)的定义
      1. 以及 Kotlin 对标准 Java APIs 的一些扩展
    • Kotlin 构建过程的简化描述
      title
  5. 此外,您还需要将 Kotlin 标准库作为应用程序的依赖项

    • 从理论上讲,您可以在不使用标准库的情况下编写 Kotlin 代码
      1. 但在实践中,您永远不需要这样做
    • 标准库包含 List、Map 和 Sequence 等基本类的定义
      1. 以及许多用于处理这些类的方法
  6. 在大多数实际情况下,会使用 Gradle 或 Maven 等构建系统来编译代码

    • Kotlin 与这些构建系统兼容
    • 所有这些构建系统还支持混合语言项目
      1. 即在同一代码库中结合使用 Kotlin 和 Java
    • Maven 和 Gradle 会将 Kotlin 运行时库和(最新版本的)Kotlin标准库
      1. 作为应用程序的依赖项,因此您无需显式地包含它们
      2. Gradle
      3. Maven
    • 为了快速上手,您无需了解所有特殊情况,只需创建一个新项目
      1. 系统就会为您生成包含必要依赖项的正确构建文件

http://www.ppmy.cn/server/121149.html

相关文章

聚观早报 | 小米三折叠手机专利曝光;李斌谈合肥投资蔚来

聚观早报每日整理最值得关注的行业重点事件&#xff0c;帮助大家及时了解最新行业动态&#xff0c;每日读报&#xff0c;就读聚观365资讯简报。 整理丨Cutie 9月20日消息 小米三折叠手机专利曝光 李斌谈合肥投资蔚来 索尼PS5 Pro包装亮相 新一代Spectacles AR眼镜发布 通…

Lanterns (dp 紫 线段树 二分 维护dp)

Lanterns - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 让所有点被覆盖&#xff0c;那么状态可以设计成覆盖一段前缀&#xff0c;并且中间不允许出现断点 由于CF崩了&#xff0c;所以暂时没提交代码。 记f(i) 为前 i 个灯笼点亮的最长前缀。 由于答案具有保留性&#xff…

网页打开时,下载的文件svg+xml类型有什么作用?

‌SVG文件在网页设计中的主要作用包括清晰度、多功能性、较小的文件大小以及可访问性和包容性。‌ ‌清晰度‌&#xff1a;SVG文件可以无限扩展&#xff0c;这意味着您可以根据需要调整其大小而不会失去清晰度。与光栅图像相比&#xff0c;SVG文件在放大时不会出现模糊或颗粒感…

Java集合(Map篇)

一.Map a.使用Map i.键值&#xff08;key-value&#xff09;映射表的数据结构&#xff0c;能高效通过key快速查找value&#xff08;元素&#xff09;。 ii.Map是一个接口&#xff0c;最常用的实现类是HashMap。 iii.重复放入k-v不会有问题&#xff0c;但是一个…

LeetCode 滑动窗口 滑动子数组的美丽值

滑动子数组的美丽值 给你一个长度为 n 的整数数组 nums &#xff0c;请你求出每个长度为 k 的子数组的 美丽值 。 一个子数组的 美丽值 定义为&#xff1a;如果子数组中第 x 小整数 是 负数 &#xff0c;那么美丽值为第 x 小的数&#xff0c;否则美丽值为 0 。 请你返回一个包含…

LeetCode从入门到超凡(二)递归与分治算法

引言 大家好&#xff0c;我是GISer Liu&#x1f601;&#xff0c;一名热爱AI技术的GIS开发者。本系列文章是我跟随DataWhale 2024年9月学习赛的LeetCode学习总结文档&#xff1b;在算法设计中&#xff0c;递归和分治算法是两种非常重要的思想和方法。它们不仅在解决复杂问题时表…

vue scoped解析

不加scoped 加上scoped 从上面的图可以看出&#xff0c;给style加上scoped之后&#xff0c;会给这个模块的所有元素都加上一个自定义属性data-v-xxxx&#xff0c;这个xxxx就是这个文件的相对路径加上文件名生成的hash值&#xff0c;这样就能保证自定义属性独一无二 给所有元…

PHP基础语法

引言 PHP&#xff08;Hypertext Preprocessor&#xff09;是一种广泛使用的开源脚本语言&#xff0c;特别适合于Web开发。它是一种服务器端语言&#xff0c;可以嵌入HTML中使用。本文将介绍PHP的基础语法&#xff0c;包括变量、数据类型、控制结构、函数等&#xff0c;为初学者…