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提示词教程中文版来了!
一些结论 六大策略: 写清晰的指令 提供参考文本 将复杂任务分解为更简单的子任务 给模型时间“思考” 使用外部工具 系统性测试变化 提高结果质量的六大策略 写清晰的指令 这些模型无法读懂你的想法。如果输出过长,要求简短回复;如果输出过于简单…...
铭豹扩展坞 USB转网口 突然无法识别解决方法
当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...
XCTF-web-easyupload
试了试php,php7,pht,phtml等,都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接,得到flag...
条件运算符
C中的三目运算符(也称条件运算符,英文:ternary operator)是一种简洁的条件选择语句,语法如下: 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true,则整个表达式的结果为“表达式1”…...
深入理解JavaScript设计模式之单例模式
目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式(Singleton Pattern&#…...
376. Wiggle Subsequence
376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...
[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?
论文网址:pdf 英文是纯手打的!论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误,若有发现欢迎评论指正!文章偏向于笔记,谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...
MVC 数据库
MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...
SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现
摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序,以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务,提供稳定高效的数据处理与业务逻辑支持;利用 uniapp 实现跨平台前…...
华为云Flexus+DeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建
华为云FlexusDeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建 前言 如今大模型其性能出色,华为云 ModelArts Studio_MaaS大模型即服务平台华为云内置了大模型,能助力我们轻松驾驭 DeepSeek-V3/R1,本文中将分享如何…...
重启Eureka集群中的节点,对已经注册的服务有什么影响
先看答案,如果正确地操作,重启Eureka集群中的节点,对已经注册的服务影响非常小,甚至可以做到无感知。 但如果操作不当,可能会引发短暂的服务发现问题。 下面我们从Eureka的核心工作原理来详细分析这个问题。 Eureka的…...
