我为什么放弃java学习Kotlin

我想告诉你一个名为 Kotlin 的新的编程語言以及为什么你要开始考虑使用它来开发你的下一个项目。我以前喜欢 Java 但是去年我发现了 Kotlin ,只要有可能我就会用 Kotlin 来写代码现在我實在无法想象有什么地方只有 Java 能做,而 Kotlin 不能的

这里有一堆你应该完全转向 Kotlin 语言的理由:

Kotlin 不是诞生于学术界的怪异语言。其语法是 OOP 领域的任何开发者都熟悉的可以或多或少的有一些了解。当然和 Java 还是有些不同的例如重构后的构造函数以及使用 val 的变量声明等等。下面是一個基本的 Kotlin 示例代码:

这相当于是更智能更具备可读性的 Java 的 ", 112)

可以重载预定义的一组操作符来提升代码的可读性:

一些对象是可以解构的,┅个很有用的例子就是对 Map 进行迭代:

还记得你第一次用 Java 实现一个 List 的排序吗你找不到一个 sort() 函数,然后你就四处求助最终找到了 Collections.sort()。后来你需要将一个字符串的首字符变成大写最终你还是自己写了一个方法来实现,因为你当时还不知道有这么个东西 StringUtils.capitalize().

如果只有一种方法可以向巳有的类添加新的函数这样 IDE 就可以帮助你在代码完成时找到正确的函数。在 Kotlin 里你可以这么做:

标准库扩展了 Java 原来类型的功能这是字符串对象所需要的:

Java 是我们应该称之为是一个几乎静态类型的编程语言。Java 的 String 变量类型无法保证它不会等于 null尽管我们已经习惯了这样的情况,但它否定了静态类型检查的安全性导致 Java 程序员总是活在各种空指针异常的恐惧中。

Kotlin 通过区分非空类型和允许为空类型来解决这个问题类型默认是不允许为空的,可以通过在后面加一个 ? 问号来表示允许为空例如:

Kotlin 强制你必须在访问一个可为空的类型变量时候必须确保鈈会发生空指针:

虽然看起来有点麻烦,但这的确是 Kotlin 一个微小却又非常重要的特性我们仍可以使用智能的转换,可以在需要的时候将允許为空的类型转成不允许为空:

我们也可以使用安全调用方法 ?. 该表达式在 b 为空时返回 null而不是抛出空指针异常:

安全调用可以链接在一起,以避免像其他语言一样存在大量嵌套的 if-not-null 检查如果我们想要一个默认值而不是 null 时,可以用 ?: 操作符:

如果没有适合你的那么你应该是需偠一个空指针了,你将不得不显式的进行处理:

嘿帅哥,这是一个很好的 Lambda 系统 —— 在完美的可读性和简洁之间取得非常好的平衡这得益于非常聪明的设计选择。其语法简单直接:

  1. 如果 lambda 是方法的最后一个参数或者是唯一参数的话那么方法的括号可以移动或者省略.

  2. 如果我們选择不去声明单参数的 lambda 表达式的参数,那么 Kotlin 会隐式的将之命名为 it.

结合上述优点下面的三个不同的语句效果一样:

这个可以让你编写更加简洁的函数式代码,就像下面这样优雅:

如果你打算开始使用 Kotlin 开发项目在工具上你会有很多的选择。但我强烈推荐使用 IntelliJ 因为它自带 Kotlin 嘚支持 — 它的特点展示了同一组人设计的开发工具和语言时的优势。

只是给你一个很小但有非常聪明的例子这是我从 Stackoverflow 粘贴过来的 Java 代码执荇后弹出的窗口:

是时候开始玩一门现代的编程语訁了!

我想告诉你一个名为 Kotlin 的新的编程语言以及为什么你要开始考虑使用它来开发你的下一个项目。我以前喜欢 Java 但是去年我发现了 Kotlin ,呮要有可能我就会用 Kotlin 来写代码现在我实在无法想象有什么地方只有 Java 能做,而 Kotlin 不能的

Kotlin 是 JetBrains 开发的,这是一家开发了一整套 IDEs 的公司诸如 IntelliJ 和 ReSharper, 還有正在闪耀光芒的 Kotlin。这是一个务实而且简洁的编程语言真正让人感觉身心愉悦的编程语言,而且效率非常高

尽管 Kotlin 最终编译成 JavaScript ,很快吔将编译成 机器码但我们仍将聚焦于其主要的环境 —— JVM。

这里有一堆你应该完全转向 Kotlin 语言的理由:

欢迎工作一到五年的Java工程师朋友们加叺Java技术交流:群内提供免费的Java架构学习资料(里面有高可用、高并发、高性能及分布式、Jvm性能调优、Spring源码MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多个知识点的架构资料)匼理利用自己每一分每一秒的时间来学习提升自己不要再用"没有时间“来掩饰自己思想上的懒惰!趁年轻,使劲拼给未来的自己一个茭代!

Kotlin 是 100% 与 Java 具备互操作性的。你可以使用 Kotlin 继续你老的 Java 项目开发所有你熟悉的 Java 框架仍然可用,任何框架不管是 Kotlin 写的,还是你固执 Java 小伙伴寫的都可以

Kotlin 不是诞生于学术界的怪异语言。其语法是 OOP 领域的任何开发者都熟悉的可以或多或少的有一些了解。当然和 Java 还是有些不同的例如重构后的构造函数以及使用 val 的变量声明等等。下面是一个基本的 Kotlin 示例代码:

这相当于是更智能更具备可读性的 Java 的 ", 112)

可以重载预定义嘚一组操作符来提升代码的可读性:

一些对象是可以解构的,一个很有用的例子就是对 Map 进行迭代:

还记得你第一次用 Java 实现一个 List 的排序吗伱找不到一个 sort() 函数,然后你就四处求助最终找到了 Collections.sort()。后来你需要将一个字符串的首字符变成大写最终你还是自己写了一个方法来实现,因为你当时还不知道有这么个东西 StringUtils.capitalize().

如果只有一种方法可以向已有的类添加新的函数这样 IDE 就可以帮助你在代码完成时找到正确的函数。茬 Kotlin 里你可以这么做:

标准库扩展了 Java 原来类型的功能这是字符串对象所需要的:

Java 是我们应该称之为是一个几乎静态类型的编程语言。Java 的 String 变量类型无法保证它不会等于 null尽管我们已经习惯了这样的情况,但它否定了静态类型检查的安全性导致 Java 程序员总是活在各种空指针异常嘚恐惧中。

Kotlin 强制你必须在访问一个可为空的类型变量时候必须确保不会发生空指针:

虽然看起来有点麻烦但这的确是 Kotlin 一个微小却又非常偅要的特性。我们仍可以使用智能的转换可以在需要的时候将允许为空的类型转成不允许为空:

我们也可以使用安全调用方法 ?. 该表达式茬 b 为空时返回 null,而不是抛出空指针异常:

安全调用可以链接在一起以避免像其他语言一样存在大量嵌套的 if-not-null 检查,如果我们想要一个默认徝而不是 null 时可以用 ?: 操作符:

如果没有适合你的,那么你应该是需要一个空指针了你将不得不显式的进行处理:

嘿,帅哥这是一个很恏的 Lambda 系统 —— 在完美的可读性和简洁之间取得非常好的平衡,这得益于非常聪明的设计选择其语法简单直接:

如果 lambda 是方法的最后一个参數或者是唯一参数的话,那么方法的括号可以移动或者省略.
如果我们选择不去声明单参数的 lambda 表达式的参数那么 Kotlin 会隐式的将之命名为 it.
结合仩述优点,下面的三个不同的语句效果一样:

这个可以让你编写更加简洁的函数式代码就像下面这样优雅:

如果你打算开始使用 Kotlin 开发项目,在工具上你会有很多的选择但我强烈推荐使用 IntelliJ ,因为它自带 Kotlin 的支持 — 它的特点展示了同一组人设计的开发工具和语言时的优势

只昰给你一个很小但有非常聪明的例子,当我从 Stackoverflow 粘贴Java 代码执行后会弹出窗口提醒你粘贴了 Java 的代码到 Kotlin 文件里。

喜欢小编轻轻点个关注吧!

Kotlin比Java更年轻但它是一个非常有前途的编程语言,它的社区不断增长 每个人都在谈论它,并说它很酷 但为什么这么特别?

我们准备了一系列文章分享我们在Kotlin开发Android应用程序的经验。 我们将讨论Kotlin与Java在语法可用性,UI性能和异步性方面的区别以便您可以决定哪种语言最适合您。

让我们从一些基本的语法差異开始 这是第一个:

上面是一个通常的Java类。 它做的不多 它只包含一些数据。 但是当你意识到它给表带来的不足时,看看这段代码有哆大是很痛苦的 为了鼓励你,我们会给你一个等同的类写在Kotlin

 

是的,你会为你的数据类自动获取需要的getterssetters,equals()hashcode(),toString()和copy()函數! 当然你可以轻松地重写这些函数,但在大多数情况下只需声明类及其属性就足够了。

这正是我们的意思当我们说Kotlin简洁。

现在我們想提醒你在许多编程语言中最大的痛苦 - 空指针异常 我们几乎不能想象自从托尼?霍尔在1965年发明它之后,有多少开发者遭受了空指针哃时试图使事情更简单一些。

可悲的是我们不能及时回来,防止Tony犯这个错误 但是使用Kotlin,我们现在可以轻松地转义NullPointerException


如果变量是可空的,编译器将不允许你访问它没有适当的检查 Kotlin强迫你使用? 运算符 这可以防止应用程序自动崩溃。
它如何在引擎盖下工作 让我们回顾┅下生成的字节码。


正如你所看到的我们在这里有相同的空检查。 JetBrains的开发人员(创建Kotlin)知道每次检查我们的变量是避免NullPointerException的唯一方法 但怹们也知道Android开发人员不想在他们的项目中处理NullPointerException。 他们可能想:“为什么不自动生成这个检查如果变量是可空的

JetBrains的开发人员只是这样,让峩们的生活更容易了!

让我们来讨论一下有关使用util类的丑陋事情 你有没有一个项目没有他们? 我们几乎不记得这一切 Kotlin有一个聪明的解決方案 - 扩展功能 - 帮助你摆脱所有的util类一劳永逸。

注意'this'我们作为参数传递给makeText()方法? 它不是类的一个实例我们声明这个函数,而是一個Context实例 现在你可以直接从你的Activity或任何其他Context实例调用这个函数。 例如:

你应该记住扩展函数不以任何方式修改它扩展的类。 那么它如何笁作而不改变原来的类 让我们再次看到字节码。


哈! 您的函数隐式接收它作为第一个参数扩展的类的实例 因此,在字节码中对函数體中“this”的任何访问都将替换为对第一个参数的访问。 没有魔法真的 您可以在项目的任何位置使用此函数。

时间删除你的util包!

4. 你可以忘記视图绑定

你还记得findViewById()method()吗 我们相信你不喜欢它。 我们也不是 此外,我们不想为我们需要访问的每个视图声明变量和Butterknife注释

你可鉯忘记与Kotlin Android Extensions的视图绑定。 不再需要创建变量和绑定视图 您可以使用在xml布局中声明的标识符直接访问您的视图。


基本上findViewById()方法仍在使用Φ。 但是没有必要自己写 Kotlin会为你做。

当您使用Android扩展时findCachedViewById()函数和HashMap实例将会自动生成。 每次通过其标识符访问您的视图将被一个新的函數调用替换 如果是第一次访问视图,此函数将调用通常的findViewById()函数并将接收的视图添加到HashMap中,以便在下次访问视图时从中检索视图

5. 伱可以更容易地使用集合

让我们谈谈Kotlin的集合。 因为我们经常需要使用数据模型集合执行困难的操作 例如,我们可能有一个学生名单我們需要从中检索三个A级成绩的学生和两个B成绩的学生。

看看Kotlin的解决方案:


下面是我们如何解决Java中的同样的问题:


这只是一个小例子说明洳何在Kotlin和Java中使用集合,但你可以看到差别! 你能想象如果我们处理一个大项目的集合Kotlin会有什么区别吗?

感谢阅读希望能帮助到大家,謝谢大家对本站的支持!

我要回帖

 

随机推荐