2017-05-17的Google I/O大会上,Android团队宣布将Kotlin作为Android开发的官方编程语言,作为一名android开发当然要跟的上潮流,今天就来了解一下Kotlin。
Kotlin介绍
Kotlin是一门用于现代多平台应用的静态编程语言,由JetBrains公司设计开发并开源。也许有人不知道JetBrains,但是Android Studio、Intellij IDEA、WebStorm或者PyCharm总知道其中的一个吧,是的这些都是JetBrains的杰作。
既然说了多平台应用的编程语言,那我们就看看支持哪些平台吧:
Kotlin 非常适合开发 Android 应用程序,将现代语言的所有优势带入 Android 平台而不会引入任何新的限制:
- 兼容性:Kotlin 与 JDK 6 完全兼容,保障了 Kotlin 应用程序可以在较旧的 Android 设备上运行而无任何问题。Kotlin 工具在 Android Studio 中会完全支持,并且兼容 Android 构建系统。
- 性能:由于非常相似的字节码结构,Kotlin 应用程序的运行速度与 Java 类似。 随着 Kotlin 对内联函数的支持,使用 lambda 表达式的代码通常比用 Java 写的代码运行得更快。
- 互操作性:Kotlin 可与 Java 进行 100% 的互操作,允许在 Kotlin 应用程序中使用所有现有的 Android 库 。这包括注解处理,所以数据绑定和 Dagger 也是一样。
- 占用:Kotlin 具有非常紧凑的运行时库,可以通过使用 ProGuard 进一步减少。 在实际应用程序中,Kotlin 运行时只增加几百个方法以及对 .apk 文件的影响只有不到100K大小。
- 编译时长:Kotlin 支持高效的增量编译,所以对于清理构建会有额外的开销,增量构建通常与 Java一样快或者更快。
- 学习曲线:对于 Java 开发人员,Kotlin 入门很容易。包含在 Kotlin 插件中的自动 Java 到 Kotlin 的转换器 有助于迈出第一步。Kotlin心印 通过一系列互动练习提供了语言主要功能的指南。
Kotlin基本语法
因为之前有使用过Intellij IDEA的经验,我这里就直接在Intellij IDEA下尝试kotlin的基本语法了。
Hello World
package demo
/**
* main函数
* @param args String数组
* @return Unit
*/
fun main(args: Array<String>) {
println("Hello World!")
}
第一行是可选的包名,然后我们声明一个包级函数main,它返回Unit类型并且使用一个字符串数组作为参数。
注意:
- 包的声明应处于源文件顶部,目录与包的结构无需匹配:源代码可以在文件系统的任意位置。
- 分号是可选的。
- 如果一个函数不返回任何有用的值,它的返回类型是
Unit
。Unit
是一种只有一个值--Unit
的类型。这个 值不需要显式返回。
接下来在Intellij IDEA中运行Hello World。如下图所示,直接点击编辑区左侧的kotlin图标,然后选择第一项即可。
运行结果如下:<u>成功打印出Hello World!</u>
(红色报警信息暂时不用管,根据google的搜索结果得知这个是mac下开发工具的一个bug,不影响开发调试。)
定义函数
接下来简单学习一下函数定义。
Kotlin 中的函数使用 fun
关键字声明,函数参数使用 Pascal 表示法定义,即 name: type。参数用逗号隔开。每个参数必须有显式类型。
/**
* 带有两个Int参数、返回Int类型的求和函数
* @param a 整数a
* @param b 整数b
* @return Int
*/
fun sum(a: Int, b: Int): Int {
return a + b
}
单表达式函数:当函数返回单个表达式时,可以省略花括号并且在 = 符号之后指定代码体即可。
// 当返回值类型可由编译器推断时,显式声明返回类型是可选的,因此圆括号后的返回值类型Int是可以省略的
fun sum2(a: Int, b: Int) = a + b
定义局部变量
使用关键字val
声明为只读的变量,
val a: Int = 1 // 立即赋值
val b = 2 // 自动推断出 `Int` 类型
val c: Int // 如果没有初始值类型不能省略
c = 3 // 明确赋值
使用关键字var
声明为可变的变量
var num = 5 // 自动推断出 `Int` 类型
num += 1
kotlin的注释
和java一样,kotlin支持单行、多行以及文档注释
// 这是一个单行注释
/*
这是一个
多行注释*/
/**
* 这是一个文档注释
* @param a 整数a
* @param b 整数b
* @return Int
*/
fun foo(a: Int): Int {
return a * 2
}
使用字符串模板
字符串可以包含模板表达式 ,即一些小段代码,会求值并把结果合并到字符串中。 模板表达式以美元符($
)开头,由一个简单的名字构成,或者用花括号扩起来的任意表达式。
fun useStringTemplates(){
var money = 100
println("I have $money yuan")
val num = 1
val num2 = 3
println("$num + $num2 = ${num + num2}")
}
下面看一下运行的结果
相关学习文档
- 官网文档https://kotlinlang.org/docs/reference/
- Jake wharton关于kotlin的视频https://www.youtube.com/watch?v=A2LukgT2mKc
网友评论