本文阅读大约半小时,写了很久,写到吐血....
前段时间在我的知识星球里统计了一下使用kotlin开发的人,感觉还不错,有十多个人在工作中已经正式使用了,我的知识星球《Hi Android》欢迎你的加入,我也应星友的需求写了一部分的kotlin基础知识,我也还在学习的过程中,为了帮助更多的星友认识到Kotlin for Android,所以花了点时间整理了这篇《Kotlin超车指南》,如果对你有所帮助,记得点个赞哦。
Kotlin 是一个用于现代多平台应用的静态编程语言,由JetBrains开发。
Kotlin可以编译成Java字节码,也可以编译成JavaScript,方便在没有JVM的设备上运行。
Kotlin已正式成为Android官方支持开发语言。
推荐我的慕课网Android实战课程,助你暴力提升Android技术。
Android X/音视频开发/社交匹配算法/即时通信/语音识别/App优化/安全加固
https://coding.imooc.com/class/390.html
点击阅读原文直达课程详情
一.Kotlin下载
Kotlin支持命令行,Eclipse,Intellij IDEA,Android Studio 3.0+ 四种方式编程,那么我们学习Kotlin基础,肯定是优先前三者, 只有在开始Android开发的时候才会选择Android Studio
1.命令行
命令行安装的话需要去Github上下载工具包
https://github.com/JetBrains/kotlin/releases/tag/v1.3.61
选择 kotlin-compiler-xxx.zip 即可。
2.Eclipse安装
安装Eclipse之前需要安装JDK,这个没意见吧,然后去Eclipse官网下载:
https://www.eclipse.org/downloads/
当然,就像ADT一样,如果想要Eclipse支持Kotlin开发,还需要下载Kotlin的插件
https://marketplace.eclipse.org/content/kotlin-plugin-eclipse
不过离线安装一般都是老版本的Eclipse了,在新版本中可以使用Eclipse商店进行在线安装,点击Eclispe菜单 - help - Eclipse Markerplace 搜索kotlin 就可以了。
3.Intellij IDEA
IDEA安装起来还是很方便的,点击链接:
https://www.jetbrains.com/idea/download/
下载自由版本即可。
4.Android Studio
Android Studio 也是如此,安装即可。
https://developer.android.google.cn/studio
二.Kotlin历史
1.Kotlin名称由来
Kotlin 来源于一个岛屿的名字,全称是 Kotlin Island,是英语「科特林岛」之意。这个小岛属于俄罗斯。
2.Kotlin版本迭代
2010 年 :JetBrains 着手开发 Kotlin。
2011 年 7 月 :JetBrains 公开宣布 Kotlin。
2012 年 2 月 :JetBrains 在 Apache 2 许可证下开源了 Kotlin 的源码
2016 年 2 月 :JetBrains 发布了 Kotlin 1.0 版,算是比较稳定的正式版。
2017 年 :1.1.2(2017 年 6 月)。相比 Kotlin 1.0 版本时,和 Kotlin 有关的代码数目从 210 万行飞升到 1000 多万行。
此后还在不断的更新中…
3.Kotlin语言特点
简洁
简洁是Kotlin最主要的特点。Kotlin中数据类,类型推导,Lambda表达式和函数式编程都可以大大减少代码行数,使得代码更加简洁。
安全
kotlin和Java一样都是静态类型语言
Kotlin支持非空和可空类型,默认情况下Kotlin数据类型声明的变量都是不能接受空值(null)的。
类型推导
Kotlin编译器可以根据变量所在的上下文环境推导出它的数据类型
支持函数式编程
作为现代计算机语言Kotlin支持函数式编程,函数式编程优点:代码变得简洁,增加线程安全和便于测试。
支持面向对象
Kotlin支持函数式编程,但也不排除面向对象。
Java具有良好的互操作性
Kotlin和Java具有100%互操作性,Kotlin不需要任何转换成包装就可以调用Java对象。反之亦然,Kotlin完全可以使用现有的Java框架或库
免费开源
Kotlin源代码是开源免费的,它采用Apache2 许可证。
三.Kotlin基础
1.输出
1fun main(arg:Array<String>){
2 println("Hello Kotlin!")
3}
main函数是我们的主程序入口,在控制台输出Hello Kotlin使用了println方法。
2.输入
有输出就有输入,不过输入是从外部传递的
1fun main(arg:Array<String>){
2 println("请输入...")
3 var a = readLine()
4 println("你输入的内容是 $a")
5}
3.变量与常量
1fun main(arg:Array<String>){
2 var name = "张三"
3 name = "李四"
4 println(name)
5
6 val age = 18
7 println(age)
8}
我们用var代表变量,即可变的量,用val声明常量,即不可变的量
4.数据类型
数据类型和Java是类似的
Byte Short String Int Long Float Double
5.类型推导
类型推导也是kotlin的一个特色,我们来看代码
1fun main(arg:Array<String>){
2 var name:String
3 var age = 19
4}
如果没有值就无法类型推导,则需要声明数据类型,如果有值,则可智能推导类型
6.函数
我们先来看下一段示例代码
1//输出
2fun print(text:String){
3 println(text)
4}
5
6//加法
7fun add(a:Int,b:Int):Int{
8 return a+b
9}
首先是我们的输出函数,实际上所有的函数都有返回值的,但是有些不需要返回值,所有返回了一个Unit类型,也就是我们理解的无返回值,而加法两数相加之后需要把结果返回回去,则有了Int的返回值类型。
a.参数默认值
有时候碰到一些封装的场景,有对函数值统一要求的时候,可以这样处理
1fun main(arg:Array<String>){
2 println(add(1,2))
3 println(add(b = 2))
4}
5
6//参数默认值
7fun add(a:Int = 5,b:Int):Int{
8 return a+b
9}
我给a默认赋值了一个5,如果使用默认值,则需要指定b = 2,如果不用此默认值,则直接传值即可,比重载好用。
7.字符串模板
在Java中要拼接字符串的话,需要很多的+号,但是有了字符串模板,一切都会变得简洁起来了
1fun main(arg:Array<String>){
2 val name = "张三"
3 val address = "超市"
4 val apple = 10
5 val banana = 5
6 //张三 去 超市 买了苹果和香蕉一共花了 15 元
7 print("$name 去 $address 买了苹果和香蕉一共花了 ${apple + banana} 元")
8}
如果用java写,你可以想象要怎么拼接
8.条件判断
条件判断我们有if语句
1fun main(arg:Array<String>){
2 val i = 10
3 if(i < 5){
4 println("i比5小")
5 }else{
6 println("i比5大")
7 }
8}
9.循环
循环使用in即可,在后面区间中使用
10.空类型
在Java中可能会出现空指针异常,但是在kotlin中是可以避免这种问题的,我们来看下空类型判断
1fun main(arg:Array<String>){
2 //noNull(null) 报错
3 println(yesNull(null))
4}
5
6//不能为null
7fun noNull(text:String):String{
8 return "Hello $text"
9}
10
11//可以为null
12fun yesNull(i:Int?):String{
13 if(i === null){
14 return "i == null"
15 }
16 return "Hello $i"
17}
</