相关阅读:
Kotlin学习资料大全,附学习视频首发
Kotlin 是一个基于 JVM静态类型编程语言,由 JetBrains 开发。于2010年首次推出。
相信很多人都会问:为什么Kotlin可以加入Android家族?它和java相比,在语法,可用性,UI性能和异步性方面双方孰好孰坏?接下来咱家就为您探讨探讨。
Kotlin的一个主要优点是它的简洁。 你用更少的代码获得更多的功能。
① Kotlin 支持类型推断,没有 Java 那样的啰嗦。
② 用 var 表示变量,val 表示常量更加的简洁
③ 方法也很简单,连 function 都缩写成了 fun
④ 类的继承和实现很简单,使用:即可
⑤ Kotlin 每个句子都不需要加分号 (;)
在许多编程语言中最大的痛苦 - 空指针异常。 但是使用Kotlin,这个问题得到了很好的解决
① 在类型上的处理,即在类型后面加上?,即表示这个变量或参数以及返回值可以为 null,否则不允许为变量参数赋值为 null 或者返回 null
② 对于一个可能是 null 的变量或者参数,在调用对象方法或者属性之前,需要加上?,否则编译无法通过。
Kotlin有一个聪明的解决方案 - 扩展功能 ,帮助你摆脱所有的util类一劳永逸。扩展函数几乎是一个通常的Kotlin函数。 但是当你声明它,你需要指定的实例将具有扩展功能的类。
注意:Kotlin 的方法扩展并不是真正修改了对应的类文件,而是在编译器和 IDE 方面做得处理。使我们看起来像是扩展了方法。
所谓的高阶函数就是:可以接受函数作为参数,也可以返回函数作为结果。
Kotlin 支持了 Streams API 和方法引用,这样函数式编程更加方便。比如下面的代码就是我们结合 Jsoup,来抓取某个 proxy 网站的数据,代码更加简单,实现起来也快速。
Kotlin 的执行效率和 Java 代码的执行效率理论上一致的。有时候 Kotlin 可能会显得高一些。比如 Kotlin 提供了方法的 inline 设置,可以设置某些高频方法进行 inline 操作,减少了运行时的进栈出栈和保存状态的开销。
Kotlin 在设计时就考虑了 Java 互操作性。可以从 Kotlin 中自然地调用现存的 Java 代码,并且在 Java 代码中也可以 很顺利地调用 Kotlin 代码。
来自Android Developers 的FAQ
1.如何在Android Studio中使用Kotlin?
Android Studio 3.0已经完全支持Kotlin了,所以现在你可以方便的新建一个基于Kotlin的Android项目或者在你现有项目的基础上增加Kotlin的代码,你还可以将你的Java代码转换为Kotlin。使用Kotlin开发,你可以完全的使用现在Android Studio附带的所有工具,像autocomplete,lint,checker,refactoring,debugging等。
2.如何在Android Studio中调试Kotlin?
调试Kotlin就像调试Java代码一样,你不需要做任何额外的事情。
3.为Kotlin提供了什么样的其他IDE支持(如lint,autocomplete,refactorings等)?
Android Studio 3.0 对Kotlin有完整的工具支持。
4.如何在Java和Kotlin语言之间进行选择?
不必选择,如果你想要的话,你可以二者一起使用。
5.我可以在Kotlin中调用Android或其他Java语言库API吗?
可以。 Kotlin提供Java语言互操作性。这是一个允许Kotlin代码透明地调用Java语言方法的设计,再加上注释,这样可以轻松地将Kotlin功能公开到Java代码。不使用任何Kotlin特定语义的Kotlin文件可以直接从Java代码引用,而没有任何注释。综合起来,这样可以将Java代码与Kotlin代码进行细微的混合。
6.我可以在同一个项目中同时使用Java文件和Kotlin文件吗?
可以。您可以利用Kotlin和Java的互操作性混合使用两种编程语言。
7.创建一个支持Kotlin的新项目
当您在Android Studio中创建新项目时,选择"包含Kotlin支持"复选框。
8.在已有项目中添加kotlin支持
如果想在已有项目中添加Kotlin代码,点击FIle > New 选择一个AndroidStudio提供的模板
然后选择kotlin作为source language
点击finish就ok了。
9.Kotlin有并行的文档,样本,codelabs和模板吗?
我们正在努力使我们的文档适用于Java和Kotlin语言用户。与此同时,开发人员可以依靠Kotlin与Java语言卓越的互操作性,自动将Java语言代码转换为Android Studio中的Kotlin。
10.Kotlin可以在Android上协同工作吗?异步/等待如何?
目前Kotlin的协同工作还在实验阶段,但不代表未来没有这种可能性。
11.Kotlin支持哪些版本的Android?
全部!Kotlin与JDK 6兼容,所以Kotlin的应用程序可以安全地运行在较旧的Android版本上。
Kotlin的特性有很多,总的来说, Kotlin这门语言简化了Java , 完全是从一个是实用派的角度,而不是学院派的角度。
相比于JRuby , Jython这些一移植到JVM上的语言, Kotlin 和Java 和互操作感觉更加自然。
每个语言的流行都需要一个引爆点,就像Ruby on Rails 引爆了Ruby 一样, Android 也许就是之前不那么流行的Kotlin的引爆点。
最后附上Kotlin学习资源:
1.kotlin官方中文翻译文档网址:
https://www.kotlincn.net/docs/reference/
2.Kotlin官网
http://kotlinlang.org/
3.kotlin中文官网
https://www.kotlincn.net/
4.kotlin的gitbook网址
https://www.gitbook.com/book/hltj/kotlin-reference-chinese/details
Kotlin学习视频
点击文末“阅读原文”领取!
优秀的Kotlin的Android开源项目
https://github.com/LeeeYou/RsKotlin/
阅读精选Kotlin版是一个由Kotlin开发的简易App,主要用于学习Kotlin语言以及和最新的框架结合使用。
引入Kotlin1.1.0版开发
引入Dagger2.4结合Kotlin
引入Retrofit2.0结合Kotlin,抽取ServiceFactory
引入RxAndroid和RxKotlin
引入Toolbar并抽取基类
引入SmartTabLayout重构IndexActivity
利用WebView展示详情
引入Glide加载图片
引入ultra-ptr:1.0实现上拉加载更多
Android-mvp-kotlin-starter
https://github.com/ravidsrk/android-mvp-kotlin-starter
Kotlin + MVP + Dagger2 + RxJava2 + Robolectric + Espresso + Mockito + JaCoCo
https://github.com/ImangazalievM/Notelin
Note-taking app Android Kotlin写的
https://github.com/githubwing/GankClient-Kotlin
gank.io kotlin实现的干货集中营客户端
风格采用了Material Design. 多数控件都是design包里面的。
MVP架构 Rxjava + Retrofit + okhttp3 +Dagger2+Kotlin
https://github.com/TonnyL/FanfouHandpick
本项目采用 Kotlin 开发,如果你使用的是 Java 进行Android开发,那么,在编译次项目时,需要在Android Studio中安装插件,并进行相关的配置。
https://github.com/wuapnjie/PoiShuhui-Kotlin
bodyweight-fitness-android
https://github.com/mazurio/bodyweight-fitness-android
https://github.com/ligi/PassAndroid
https://github.com/Yalantis/SearchFilter
参考文章:
https://developer.android.com/kotlin/faq.html
https://developer.android.com/kotlin/resources.html
更多面试和学习资料点击下面的“阅读原文”获取