Kotlin学习之旅第八天
今天的主题是:From Java to Kotlin
前言
Kotlin学习之旅(D6)-Kotlin Idioms part 1
Kotlin学习之旅(D7)-Kotlin Idioms part 2
学习资源
Kotlin官网在线学习课程(需要翻墙):Kotlin Koans
kotlin中文(不需要翻墙):Kotlin语言中文站
Github学习资源 : From Java To Kotlin
kotlin必备知识:
- Learn Kotlin - lateinit vs lazy
- Learn Kotlin - apply vs with
- Learn Kotlin - Data Class
- Learn Kotlin - Destructuring Declarations
- Learn Kotlin - Extension Functions
- Learn Kotlin - Sealed Classes
首先如果是有Java基础的童鞋,推荐直接从官网文档上手,可以快速学习Kotlin这门语言的特性和用法。
如果是零基础的童鞋,那么推荐看视频+看书,一般都是直接在youtube上搜索kotlin就可以找到很有有用的视频了,书籍的话推荐《Kotlin in Action》
这两天的任务比较轻松,因为From Java to Kotlin 其实在前面我们讲语法和习惯用法的时候,基本上都已经见过了,这里其实只是相当于再复习一遍,而且上面的 From Java To Kotlin已经很全了,我就把自己不太熟练的摘录下来。
常见区别
Null
Java
1 | if(text != null){ |
Kotlin
1 | val length = text?.length |
?:可以为空,但是如果没做非空判断,在编译的时候会报错
!!.:可以为空,编译的时候也不会报错,但是运行的时候有可能会NPE
Strings II
Java
1 | String text = "First Line\n" + |
Kotlin
1 | """ text = |
Kotlin里面通过 '''
来表示多行字符串,通过 |
来表示换行
Bits Operations
Java
1 | final int andResult = a & b; |
Kotlin
1 | val andResult = a and b |
Java 和 Kotlin 的位操作符
Collections
Java
1 | for (int number : numbers) { |
Kotlin
1 | numbers.forEach { |
Kotlin通过 filter{x > 5}
来表示 Java里面的 if(x > 5)
这个条件语句的区别需要注意
Constructors
Java
1 | public class Utils { |
Kotlin
1 | class Utils private constructor() { |
Java:通过 静态方法 来实现工具类
Kotlin:一切皆是对象,通过 companion object / ojbect utils 来实现工具类
Class methods
Java
1 | public class Utils { |
Kotlin
1 | fun Int.triple(): Int { |
Java:通过static实现类方法
Kotlin:通过扩展函数实现类方法
enum
Java
1 | public enum Direction { |
Kotlin
1 | enum class Direction constructor(direction: Int) { |
总结
一开始以为From Java to Kotlin 要讲两天的,因为我是先大致浏览了一遍官方文档,然后做的学习计划,结果发现经过前面的学习,对Kotlin的语法掌握了的情况下,其实很多Java和kotlin之间的区别都已经很熟悉了,强烈推荐大家去看看 From Java To Kotlin,就当是一个复习/总结,加深对Kotlin语法的熟悉。
明天开始正式进入Kotlin in Android 的学习,这个才是我们Kotlin学习之旅的重点。
Day 8 - Learn Kotlin Trip, Completed.