玖叶教程网

前端编程开发入门

Kotlin为什么比Java好,看了这些你就知道了

作者:feintkotlin(Kotlin学习网)

附言:想要学习更多关于Kotlin的知识,可以通过以下途径进行:feintkotlin的知乎专栏(Kotlin学习),feintkotlin的CSDN博客,Kotlin学习网。

字符串模版

你还在为java中使用大量的加号连接字符串和变量而感到烦恼吗?快来试试Kotlin中的字符串模版吧!一切都只需在一个字符串中,就能完成。让我们从下图中体会下字符串模版的便捷之处。

java版本

kotlin版本

范围表达式

在Kotlin可以通过 a..b 这种格式的范围表达式,生成一个可遍历的序列。在编程练习中经常写的for循环也可以以一种更加轻快的方式实现

Java版for循环:for(int i=0;i<10;i++){...}

Kotlin版for循环:for(i in 1..9){...}

when表达式

在Java中,当选择条件特别多的时候,可能会使用 switch 语句来代替 ifelse 语句。但是 switch 的功能比较当一,只能进行值的比较。而 Kotlin 中的 when 表达式则拥有更加丰富的功能。首先你既可以把它当作一个表达式使用,又能将它作为一个普通的语句。其次它不当当是进行值的比较,还能判断是否在某一个范围内、是否是某个类型的实例等等。甚至当你没有给定目标值时,可以填写任何的布尔表达式。看下下面一段when语句的使用实例,你可以想想如果用java的话该怎么实现。

更现代的lambda表达式

就是是怎样个现代化,语言也不好描述,直接上例子,你们体会体会。

java版本

kotlin版本

Kotlin中lambda表示会自动推断参数的类型,以及写法也更加的方便。

函数参数

在C++和C中可以通过函数指针将函数当作参数使用。而Java则只能够借助接口进行实现,尽管JDK1.8对lambda表达式的支持,让代码的写法可以更加简洁。但因为没有语法层面的支持,这个处理过程依旧是重量级的,你需要为了一个函数而单独创建一个接口。而Kotlin对函数参数的原生支持,使得整个操作都十分的轻量级。下面来看一段函数参数的实例代码:

定义一个接收函数参数的函数max

使用

在这个实例中处了函数参数外,还使用到了即将要提及到扩展函数

扩展函数

在Java中你如果想要为一个类进行功能上的扩展,需要实现一个子类来继承这个类。在Kotlin中,你不必为了添加一个小小的功能,而又去创建一个新的类。通过使用扩展函数,直接在这一个类的基础上为他增添新的功能,并能够直接通过这个类进行调用。

上一个例子中就为String类扩展了一个max,这样,在之后所有的字符串中都可以直接调用这个函数

委托

在学习C#的时候,就发现了这个Java所不具有的语言特性。现在作为Java的替代者,Kotlin也具有了这么一个语言特性。关于委托的详细内容,等之后咱会专门写一篇文章进行详细的描述。

运算符重载

这是一个C++中有的特性。对于一些常用运算:比较大小、加减运算、下标运算等等,将其重载为 “ < + [] ” 这样子的运算符,使得代码的书写更加的简洁美观。关于运算符的详细内容可以在文章开头提到我的CSDN博客和Kotlin学习网中《C++能做的,Kotlin也能做到:运算符重载总结》这篇文章进行了解

空指针安全

初学者在写Java程序时,碰到最多的一个异常,想必就是 NullPointException(空指针异常)啦。一不小心,就在那个角落里忘记对类进行初始化了,结果到了开始运行的时候才发现错误。而在Kotlin中这样的问题会直接在编译的时候被发现,使你无法编译通过,甚至借助IDEA这样的IDE工具,在编码阶段就会出现错误提示。将问题扼杀在摇篮之中。

协程

协程又是Kotlin中一个完全新的特性,在Kotlin中也是最近才出现的。作为线程的替代者,它的优点不言而喻。关于协程的详细内容,可以参考文章:Kotlin中线程的代替者——协程,究竟有什么好?在Kotlin 中如何轻松愉快的处理异步操作

总结

还在等什么,快来学习Kotlin吧,Java什么的就让它死在沙滩上吧!

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言