Kotlin 教程(环境搭建)
Kotlin IntelliJ IDEA环境搭建
IntelliJ IDEA 免费的社区版下载地址:Download IntelliJ IDEA – The Leading Java and Kotlin IDE
下载安装后,我们就可以使用该工具来创建项目,创建过程需要选择 SDK, Kotlin 与 JDK 1.6+ 一起使用。
在右侧的下拉菜单中勾选 Kotlin (Java) 复选框。
接下来我们取一个项目名:HelloWorld
项目创建完后,文件结构如下,跟 Java 的还是很类似的。
接下来 我们点击 src 文件夹,创建一个 Kotlin 文件,它可以任意命名,这里我们创建 app.kt
接下来,我们在 app.kt 文件中写点代码。IntelliJ IDEA 为我们提供了一个快速完成此操作的模板,只需键入 main 然后按 Tab 即可。
现在我们添加一行代码来打印出"Hello, World!"吧。
接下来我们可以鼠标点击编辑器左上角 kotlin图标并选择 Run 'AppKt'来运行代码:
运行成功后就可以在窗口 Run 中看到结果。
这样我们第一个 Kotlin 代码就运行起来了。
Kotlin Eclipse 环境搭建
Eclipse 通过 Marketplace 安装 Kotlin 插件,打开 Eclipse,选择 Help -> Eclipse Marketplace… 菜单,搜索 Kotlin 插件:
然后重启 Eclipse 选择 Window -> Open Perspective -> Other...,如果看到了 Kotlin 选项表明安装成功。
创建新项目
选择 File -> New -> Kotlin Project 来创建 Kotlin 项目:
创建成功后,项目结构如下:
接下来 我们点击 src 文件夹,创建一个 Kotlin 文件,不用写 ".kt" ,默认自动添加,它可以任意命名,这里我们创建 hello
接下来,我们在 hello.kt 文件中写点代码。Eclipse 为我们提供了一个快速完成此操作的模板,只需键入 main 然后按 Enter 即可。
运行应用
接下来我们在 hello.kt 的编辑框内右击鼠标选择 Run As -> Kotlin Application 即可运行:
运行成功后就可以在窗口 Console 中看到结果。
这样我们第一个 Kotlin 代码就运行起来了。
Kotlin 使用命令行编译
Kotlin 命令行编译工具下载地址:https://github.com/JetBrains/kotlin/releases/tag/v1.1.2-2,目前最新为 1.1.2-2。
你可以选择一个最新的稳定版下载。
下载完成后,解压到指定目录,然后将 bin 目录添加到系统环境变量。bin 目录包含编译和运行 Kotlin 所需的脚本。
SDKMAN!
在 OS X、Linux、Cygwin、FreeBSD 和 Solaris 系统上也可以使用更简单的安装方法,命令如下:
$ curl -s https://get.sdkman.io | bash$ sdk install kotlin
Homebrew
在 OS X 下,你可以使用 Homebrew 安装:
$ brew update $ brew install kotlin
MacPorts
如果你是 MacPorts 用户,可以使用以下命令安装:
$ sudo port install kotlin
创建和运行第一个程序
创建一个名为 hello.kt 文件,代码如下:
hello.kt
fun main(args: Array<String>) { println("Hello, World!") }
使用 Kotlin 编译器编译应用:
$ kotlinc hello.kt -include-runtime -d hello.jar
- -d: 用来设置编译输出的名称,可以是 class 或 .jar 文件,也可以是目录。
- -include-runtime : 让 .jar 文件包含 Kotlin 运行库,从而可以直接运行。
如果你想看所有的可用选项,运行:
$ kotlinc -help
运行应用
$ java -jar hello.jar Hello, World!
编译成库
若需要将生成的 jar 包供其他 Kotlin 程序使用,可无需包含 Kotlin 的运行库:
$ kotlinc hello.kt -d hello.jar
由于这样生成的 .jar 文件不包含 Kotlin 运行库,所以你应该确保当它被使用时,运行时在你的 classpath 上。
你也可以使用 kotlin 命令来运行 Kotlin 编译器生成的 .jar 文件
$ kotlin -classpath hello.jar HelloKt
HelloKt 为编译器为 hello.kt 文件生成的默认类名。
运行 REPL(交互式解释器)
我们可以运行如下命令得到一个可交互的 shell,然后输入任何有效的 Kotlin 代码,并立即看到结果
使用命令行执行脚本
Kotlin 也可以作为一个脚本语言使用,文件后缀名为 .kts 。
例如我们创建一个名为 list_folders.kts,代码如下:
import java.io.Fileval folders = File(args[0]).listFiles { file -> file.isDirectory() } folders?.forEach { folder -> println(folder) }
执行时通过 -script 选项设置相应的脚本文件。
$ kotlinc -script list_folders.kts <path_to_folder>
$ kotlinc -script list_folders.kts
Kotlin Android 环境搭建
安装 Kotlin 插件
Android Studio 从 3.0(preview)版本开始将内置安装 Kotlin 插件。
打开 Settings ( Mac 为 Preferences) 面板,在右侧找到 Plugins 选项 (快捷键 Ctrl+, Mac 下为 command+),搜索框输入 "Kotlin" 查找,点击 Search in repositories(仓库中搜索),然后安装即可,安装完成之后需要重启 Android Studio。
创建新工程
选择 Start a new Android Studio project 或者 File | New project,大多数选项均有默认值 ,只需要按几次"回车"键即可。
Android Studio 3.0 在当前对话框中提供启用 Kotlin 支持的选项,勾选后可以跳过 "配置 Kotlin 工程(Configuring Kotlin in the project)"的步骤。
选择 Android 版本:
选择需要创建的 Activity 样式:
命名该 Activity:
在 Android Studio 3.0 中,可以选择使用 Kotlin 创建 activity,因此也不需要"将Java 代码转换为 Kotlin(Converting Java code to Kotlin)"这一步骤。
早期版本中则会先使用 Java 创建 activity,然后再使用自动转换工具 进行转换。
将 Java 代码转换为 Kotlin
重新打开Android Studio,新建一个Android项目吧,添加一个默认的MainActivity
打开 MainActivity.java 文件,通过菜单栏依次调出 Code | Convert Java File to Kotlin File:
转换完成后即可看到使用 Kotlin 编写的 activity。
工程中配置 Kotlin
在开始编辑此文件时,Android Studio 会提示当前工程还未配置 Kotlin,根据提示完成操作即可,或者可以在菜单栏中选择 Tools
选择配置时有如下对话框,选择已安装的最新版本即可。
Kotlin 配置完成后,应用程序的 build.gradle 文件会更新。 你能看到新增了 apply plugin: 'kotlin-android' 及其依赖。
同步工程,在提示框中点击"立即同步(Sync Now)"或者使用 Sync Project with Gradle Files命令。
相关文章:

Kotlin 教程(环境搭建)
Kotlin IntelliJ IDEA环境搭建 IntelliJ IDEA 免费的社区版下载地址:Download IntelliJ IDEA – The Leading Java and Kotlin IDE 下载安装后,我们就可以使用该工具来创建项目,创建过程需要选择 SDK, Kotlin 与 JDK 1.6 一起使…...

04.领域驱动设计:了解聚合和聚合根,怎样设计聚合-学习总结
目录 1、概述 2、聚合 3、聚合根 4、怎么设计聚合 4.1 聚合的构建过程主要步骤 第 1 步:采用事件风暴。 第 2 步:选出聚合根。 第 3 步:找出与聚合根关联的所有紧密依赖的实体和值对象。 第 4 步:画出对象的引用和依赖模型…...

cmake-find_package链接第三方库
文章目录 基本调用形式和模块模式使用方式 之前我们是使用了绝对路径来链接OpenCV第三方库,但是现在很多库一般会自己写一些cmake文件提供给用户,用户可以直接使用其中的内置变量即可。使用的命令就是find_package。 基本调用形式和模块模式 find_packa…...

obsidian阅读pdf和文献——与zotero连用
参考: 【基于Obsidian的pdf阅读、标注,构建笔记思维导图,实现笔记标签化、碎片化,便于检索和跳转】 工作流:如何在Obsidian中阅读PDF - Eleven的文章 - 知乎 https://zhuanlan.zhihu.com/p/409627700 操作步骤 基于O…...

走方格(动态规划)
解题思路: 找边界,即行为1,列为1。 拆分问题,拆分成一次走一步,只能向右或者向下走。 解题代码: public static void main(String[] args) {int [][]arrnew int[31][31];Scanner scnew Scanner(Sys…...

基于DataKit迁移MySQL到openGauss
📢📢📢📣📣📣 哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10余年DBA及大数据工作经验 一位上进心十足的【大数据领域博主】!😜&am…...

API网关-Apinto压缩包方式自动化安装配置教程
文章目录 前言一、Apinto安装教程1. 复制脚本2. 增加执行权限3. 执行脚本4. Apinto命令4.1 启动Apinto4.2 停止Apinto4.3 重启Apinto4.4 查看Apinto版本信息4.5 加入Apinto集群4.6 离开Apinto集群4.7 查看Apinto节点信息 5. 卸载Apinto 二、Apserver(Apinto Dashboard V3)安装教…...

内网穿透natapp使用教程(Linux)
我的使用场景:在家访问学校服务器,由于不在一个局域网,所以需要使用内网穿透,我使用的是natapp。需要在有局域网的时候做好以下步骤。 (natapp官网:https://natapp.cn/) 1. 下载客户端 &#x…...

php函数 二
一 字符串包含 1.1 str_starts_with(string $haystack, string $needle) php8版本中新函数。 检查字符串是否以指定子串开头,区分大小写。返回布尔值。 $haystack待判断的字符串,$needle需要查询的内容。 function test1() {$str "Qwe asd zx…...

IDC机房交换机核心技术与应用指南
IDC机房交换机核心技术与应用指南 在这个快速发展的数字时代,数据中心作为信息技术的心脏,不仅承载着海量数据的处理、存储和传输,更是支撑着全球企业运营和互联网服务的关键基础设施。在众多构成数据中心的组件中,IDC机房交换…...

Compose | UI组件(五) | Button 按钮组件
文章目录 前言Button 是什么?Button的创建Button显示水平方向的UI IconButton是什么?IconButton是创建 FloatingActionButton是什么?FloatingActionButton创建 ExtendedFloatingActionButton是什么? 总结 前言 随着移动端的技术不…...

【leetcode刷刷】235. 二叉搜索树的最近公共祖先 、701.二叉搜索树中的插入操作 、450.删除二叉搜索树中的节点
235. 二叉搜索树的最近公共祖先 class Solution:def lowestCommonAncestor(self, root: TreeNode, p: TreeNode, q: TreeNode) -> TreeNode:# 递归if not root: return if root.val p.val: return pif root.val q.val: return qleft Noneright Noneif root.val > p.…...

YoloV8改进策略:BackBone改进|DCNv4最新实践|高效涨点|多种改进教程|完整论文翻译
摘要 涨点效果:在我自己的数据集上,mAP50 由0.986涨到了0.993,mAP50-95由0.737涨到0.77,涨点明显! DCNv4是可变形卷积的第四版,速度和v3相比有了大幅度的提升,但是环境搭建有一定的难度,对新手不太友好。如果在使用过程遇到编译的问题,请严格按照我写的环境配置。 …...

高中数学常识
一、大小关系 |x| > |sinx| 理由: 很明显,在圆内,弧长x>垂线sinx 3x、2x 、 1 2 \frac{1}{2} 21x 理由: log 1 2 _\frac{1}{2} 21x、log 2 _2 2x、 log 3 _3 3x 二、(xy)? 的求法 利用二项式定理 三、平…...

docker之部署青龙面板
青龙面板是一个用于管理和监控 Linux 服务器的工具,具有定时运行脚本任务的功能。在实际情况下也可以用于一些定期自动签到等任务脚本的运行。 本次记录下简单的安装与使用,请提前安装好docker,参考之前的文章。 一、安装部署 1、拉取镜像 # …...

Type-C平板接口协议芯片介绍,实现单C口充放电功能
在现代平板电脑中,Type-C接口已经成为了一个非常常见的接口类型。相比于传统的USB接口,Type-C接口具有更小的体积、更快的传输速度和更方便的插拔体验。但是,在使用Type-C接口的平板电脑上,如何实现单C口充电、放电和USB2.0数据传…...

系统架构演变
1.1系统架构的演变 2008年以后,国内互联网行业飞速发展,我们对软件系统的需求已经不再是过去”能用就行”这种很low的档次了,像抢红包、双十一这样的活动不断逼迫我们去突破软件系统的性能上限,传统的IT企业”能用就行”的开发思…...

Oracle PL/SQL Programming 第2章:Creating and Running PL/SQL Code 读书笔记
总的目录和进度,请参见开始读 Oracle PL/SQL Programming 第6版 暂不考虑系统设计或单元测试之类的任务,所有 PL/SQL 程序员必须熟悉的基本操作任务包括: 浏览数据库创建和编辑 PL/SQL 源代码编译 PL/SQL 源代码,并更正编译器注…...

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之Swiper容器组件
鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之Swiper容器组件 一、操作环境 操作系统: Windows 10 专业版、IDE:DevEco Studio 3.1、SDK:HarmonyOS 3.1 二、Swiper容器组件 滑块视图容器,提供子组件滑动轮播显示的能力。…...

『建议收藏』OpenAI官方出的Prompt提示词教程中文版来了!
一些结论 六大策略: 写清晰的指令 提供参考文本 将复杂任务分解为更简单的子任务 给模型时间“思考” 使用外部工具 系统性测试变化 提高结果质量的六大策略 写清晰的指令 这些模型无法读懂你的想法。如果输出过长,要求简短回复;如果输出过于简单…...

牛刀小试 - C++ 推箱子小游戏
参考文档 C笔记:推箱子小游戏 copy函数 memcpy()函数用法(可复制数组) 使用memcpy踩出来的坑,值得注意 完整代码 /********************************************************************* 程序名:推箱子小游戏 说明&#x…...

手机视频压缩怎么压缩?一键瘦身~
现在手机已经成为我们日常生活中必不可少的工具,而在手机的应用领域中,文件的传输和存储是一个非常重要的问题。很多用户都会遇到这样一个问题,那就是在手机上存储的文件太多太大,导致手机存储空间不足,那么怎么在手机…...

目标主力能源:华为智能光伏的时代指南针
让新能源成为人类主要的能源来源,是实现“双碳目标”的核心方案。而光伏能源则是目前新能源体系中的主要选择之一。以光伏为核心构建新型电力系统,让光伏能源成为主力能源值得关注和期待。 过去几年,光伏能源极速发展。但如何百尺竿头更进一步…...

每日一题 力扣2846 边权重均等查询
2846. 边权重均等查询 题目描述: 现有一棵由 n 个节点组成的无向树,节点按从 0 到 n - 1 编号。给你一个整数 n 和一个长度为 n - 1 的二维整数数组 edges ,其中 edges[i] [ui, vi, wi] 表示树中存在一条位于节点 ui 和节点 vi 之间、权重…...

【Docker】Docker学习⑨ - 单机编排之Docker Compose
【Docker】Docker学习⑨ - 单机编排之Docker Compose 一、Docker简介二、Docker安装及基础命令介绍三、Docker镜像管理四、Docker镜像与制作五、Docker数据管理六、网络部分七、Docker仓库之单机Dokcer Registry八、Docker仓库之分布式Harbor九、单机编排之Docker Compose1 基础…...

ES6笔记-symbol
ES6 symbol 是什么 ES5的对象属性名是字符串,这容易造成属性名的冲突。symbol是一种机制,保证每个属性的名字都是独一无二的。这样就从根本上防止属性名冲突。 它是一种原始数据类型Symbol,表示独一无二的值。它属于javaScript语言的原生数据类型之一。…...

C++设计模式介绍:优雅编程的艺术
物以类聚 人以群分 文章目录 简介为什么有设计模式? 设计模式七大原则单一职责原则(Single Responsibility Principle - SRP)开放封闭原则(Open/Closed Principle - OCP)里氏替换原则(Liskov Substitution …...

GitLab升级版本(任意用户密码重置漏洞CVE-2023-7028)
目录 前言漏洞分析影响范围查看自己的GitLab版本升级路程 升级过程13.1.1113.8.8 - 14.0.1214.3.614.9.5 - 16.1.6 前言 最近GitLab发了个紧急漏洞需要修复,ok接到命令立刻着手开始修复,在修复之前先大概了解一下这个漏洞是什么东西 漏洞分析 1、组件…...

Unity——八叉树的原理与实现
八叉树原理 八叉树(Octree)是一种用于在三维空间中进行空间分割的数据结构。它将三维空间递归地划分为八个子空间,每个子空间对应于一个八叉树节点。这种分割方式可以有效地组织和管理场景中的对象,提高检索效率,特别…...

android 自定义软键盘的显示和隐藏
记一下,以后不用找在InputMethodService中有这两个方法可以看到软键盘显示状态 //软键盘隐藏 override fun onWindowHidden() {super.onWindowHidden() } //软键盘显示 override fun onWindowShown() {super.onWindowShown() } 在activity中可以通过这种方法看到软键盘显示状…...