前几天在找工作面试的过程中,由于我的简历中提到我有kotlin语言的基础,结果面试官就问到了我今天要写的这个话题,当时,我回答的时候,我自己感觉回答的不是很完美,条理不是很清晰,于是,今天趁工作闲暇之余写一篇关于kotlin和java比较,kotlin优势方面的文章,提升自己对这门语言的了解,同时也希望能够帮助到有需要的各位小伙帮。以下便是kotlin的优势所在,我一一列举:
1、首先,kotlin语法简单,不啰嗦
Kotlin 支持类型推导,没有 Java 那样的啰嗦。
另外用 var 表示变量,val 表示常量更加的简洁
方法也很简单,连 function 都缩写成了 fun,平添了几分双关之意。
类的继承和实现很简单,使用:即可
Kotlin 每个句子都不需要加分号 (;)
2、空指针安全
空指针(NullPointerException 或 NPE)是我们使用 Java 开发程序中最常见的崩溃了。因为在 Java 中我们不得不写很多防御性的代码,在 Kotlin 中空指针异常得到了很好的解决。
在类型上的处理,即在类型后面加上?,即表示这个变量或参数以及返回值可以为 null,否则不允许为变量参数赋值为 null 或者返回 null
对于一个可能是 null 的变量或者参数,在调用对象方法或者属性之前,需要加上?,否则编译无法通过。
3、支持方法扩展
很多时候,Framework 提供给我们的 API 往往都时比较原子的,调用时需要我们进行组合处理,因为就会产生了一些 Util 类,一个简单的例子,我们想要更快捷的展示 Toast 信息,在 Java 中我们可以这样做。
但是 Kotlin 的实现却让人惊奇,我们只需要重写扩展方法就可以了,比如这个 longToast 方法扩展到所有的 Context 对象中,如果不去追根溯源,可能无法区分是 Framework 提供的还是自行扩展的。
4、Lambda, 高阶函数,Streams API, 函数式编程支持
所谓的 Lambda 表达式是匿名函数,这使得我们的代码会更加的简单。比如下面的代码就是 lambda 的应用。
所谓的高阶函数就是:
可以接受函数作为参数
也可以返回函数作为结果
举一个接受函数作为参数的例子。在 Android 开发中,我们经常使用 SharedPreference 来存储数据,如果忘记调用 apply 或者 commit 则数据修改不能应用。利用 Kotlin 中的高阶函数的功能,我们能更好的解决这个问题:
当然这上面的例子中我们也同时使用了方法扩展这个特性。
Kotlin 支持了 Streams API 和方法引用,这样函数式编程更加方便。比如下面的代码就是我们结合 Jsoup,来抓取某个 proxy 网站的数据,代码更加简单,实现起来也快速。
字符串模板
无论是 Java 还是 Android 开发,我们都会用到字符串拼接,比如进行日志输出等等。在 Kotlin 中,字符串模板是支持的,我们可以很轻松的完成一个字符串数组的组成: