Kotlin 初识

一 :什么是Kotlin

Kotlin是一种开源的静态类型编程语言,支持面向对象和函数式编程。Kotlin提供了与其他语言类似的语法和概念,包括C#,Java和Scala等。Kotlin的目标不是独特 - 相反,它从几十年的语言发展中汲取灵感。它存在于以JVM(Kotlin / JVM),JavaScript(Kotlin / JS)和本机代码(Kotlin / Native)为目标的变体中。

这面延伸下静态类型和动态类型的区别:

个人理解这种区别主要是类型检查(Type Check)发生的时机不同,即可以通过判断语言是在什么时候检查类型错误来判断其所属的类型。

静态类型: 编译时即知道每一个变量的类型,因此,若存在类型错误编译是无法通过的。
另外一种说法(静态类型语言(Statically typed language) 就是指在运行之前编译时要检查数据的类型的语言。如目前主流的开发语言C、C++,JAVA,C#.)

动态类型: 编译时不知道每一个变量的类型,因此,若存在类型错误会在运行时发生错误。
另外一种说法(动态类型语言(Dynamically typed language)就是指在运行的时候才去检查数据的类型的语言。如大部分脚本语言,ruby,Python。所谓动态就是在运行的时候根据给变量或者对象的值的类型来确定其类型。)
Go语言的类型检查发生在编译时,因此它是静态类型的。

谷歌在2017年中举行的I/O开发者大会上宣布,将Kotlin语言作为安卓开发的一级编程语言。Kotlin由JetBrains公司开发,与Java 100%互通,并具备诸多Java尚不支持的新特性。JetBrains在2010年首次推出Kotlin编程语言,并在次年将之开源。Android Studio3.0后的版本会提供对Kotlin的支持。

二:Kotlin有什么好处

Kotlin是一种运行在JVM上的静态类型编程语言,可以编译为Java字节码,同时也可以编译成JavaScript、本地(Native)代码,方便在没有JVM的设备上运行。Kotlin语言具有以下特点:

1,现代并富有表现力(简洁)
 Kotlin 的现代语言功能让您可以专注于表达自己的想法,少编写样板代码。编写的代码越少,意味着需要测试和维护的 
 代码就越少。

(1) 使用一行代码创建一个包含 getters、 setters、 equals()、 hashCode()、 toString() 以及 copy() 的 POJO:

   data class Book(val name: String)

   var book: Book = Book("XiaoMing");
   var copyBook: Book = book.copy("XiaoHu")

(2) 或者使用 lambda 表达式来过滤列表:

val positiveNumbers = list.filter { it > 0 }

(3) 想要单例?创建一个 object 就可以了:

object ThisIsASingleton {
    val companyName: String = "JetBrains"
}
2,更安全的代码
  使用 Kotlin 提升应用品质。@Nullable 和 @NonNull 类型已纳入到 Kotlin 的类型系统中,可帮助您避免 
  NullPointerException。此外,Kotlin 还有许多其他语言功能,可帮助您避免常见的编程错误。

(1) 彻底告别那些烦人的 NullPointerException——著名的十亿美金的错误

var output: String
output = null   // 编译错误

(2) Kotlin 可以保护你避免对可空类型的误操作

val name: String? = null    // 可控类型
println(name.length())      // 编译错误

(3 )并且如果你检查类型是正确的,编译器会为你做自动类型转换

fun calculateTotal(obj: Any) {
    if (obj is Invoice)
        obj.calculateTotal()
}
3,可互操作
  您可以在 Kotlin 代码中调用 Java 代码,或者在 Java 代码中调用 Kotlin 代码。Kotlin 可完全与 Java 编程语言互操作, 
  因此您可以根据需要在项目中添加任意数量的 Kotlin 代码。

(1) 使用 JVM 上的任何现有库,因为有 100% 的兼容性,包括 SAM 支持。

import io.reactivex.Flowable
import io.reactivex.schedulers.Schedulers

Flowable
    .fromCallable {
        Thread.sleep(1000) //  模仿高开销的计算
        "Done"
    }
    .subscribeOn(Schedulers.io())
    .observeOn(Schedulers.single())
    .subscribe(::println, Throwable::printStackTrace)

(2) 无论是 JVM 还是 JavaScript 目标平台,都可用 Kotlin 写代码然后部署到你想要的地方

import kotlin.browser.window

fun onLoad() {
    window.document.body!!.innerHTML += "<br/>Hello, Kotlin!"
}
4,工具友好
  可用任何 Java IDE 或者使用命令行构建。

(1) 一门语言需要工具化,而在 JetBrains,这正是我们做得最好的地方!

并且
Kotlin在语法上具有很多下一代编程语言静态语言特性:如类型推断、函数式编程、多范式支持、可空性表达、扩展函数、模式匹配等。

以下是Kotlin的版本发布:

Kotlin 1.1 的新特性

目录

Kotlin 1.2 的新特性

目录

Kotlin 1.3 的新特性

目录

历经了漫长而充足的的测试,协程终于正式发布了!这意味着自 Kotlin 1.3 起,协程的语言支持与 API 已完全稳定。参见新版协程概述

Kotlin 1.3 引入了挂起函数的可调用引用以及在反射 API 中对协程的支持。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章