其余:可让Kotlin代码运行在iOS设备上及编译成JavaScript,容许你在浏览器中运行Kotlin代码等
后端
Kotlin和Java同样是一种静态类型的编程语言。这意味着全部表达式的类型在编译期就已经肯定了。与Java不一样的是Kotlin不须要你在源代码中显示的声明每一个变量的类型。不少状况下,变量类型能够根据上下文来自动判断,编译器这种根据上下文推断变量类型的能力被称做类型推导。浏览器
val i = 1 // 这里能够不用像下面那样显示的声明i为Int类型,编译器根据类型推导能够自动推导出i为Int类型 //val i:Int = 1 //这里和上面代码是等效的
静态类型带来的好处:安全
函数式编程的核心概念以下:服务器
fun main(args: Array<String>) { val a = test03(test()) //将test04()函数做为run函数的参数传递 run(::test04) } fun test(): Int { //定义一个函数,并返回一个Int类型的值 val a = 1 return a } fun test02(): KFunction0<Int> { //将test()函数做为test02()函数的返回值 return ::test } fun test03(i: Int) { println("test03 i=$i") } fun test04() { println("test04") }
2. 不可变性: 使用不可变对象(用val
修饰,至关于Java中的final
),这保证了它们的状态在其建立后不能再改变。多线程
3. 无反作用: 使用的是纯函数。此类函数在输入相同时会产生一样的结果,而且不会修改其余对象的状态,也不会和外面的世界交互。框架
Kotlin是免费和开源的,全面支持主流的IDE和构建系统。编程语言
Kotlin没有强制使用某种特定的编程风格和范式。当你开始学习这门语言的时候,可使用熟悉的来自Java经验的风格。而后,你会渐渐发现更多强大的Kotlin特性,并学习把它们应用到你的代码中,让代码更简洁、更符合语言习惯。不少状况下,IDE会发现那些能够用更简洁的结构来替换的通用代码模式,并给你提供修正这些代码的选择。函数式编程
在Kotlin中,咱们努力地保证你写的代码都具备实际的意义,而不是仅仅为了知足代码结构的须要。许多标准的Java样板代码,例如getter、setter以及将构造方法的参数赋值给字段的逻辑,在Kotlin中都是隐式的,并不会使你的源代码变得混乱。函数
做为面向JVM的静态类型语言,Kotlin还保证了应用程序的类型安全。这比使用Java的成本要更低:不须要指定全部的类型声明,由于许多状况下编译器会自动地推断出类型。更重要的一点是,Kotlin努力地从你的程序中消除NullPointerException。Kotlin的类型系统跟踪那些能够或不能够为null的值,而且禁止那些运行时可能致使NullpointerException的操做。这所带来的额外的成本是极小的:把类型标记为可空的只要一个字符,就是在类型尾部加一个问号:
val s: String? = null //能够为null val s2: String = "" //不能够为null
除此以外,Kotlin还有助于避免的另外一种异常类型就是ClassCastException。在Java中,当你把一个对象转换成一种类型,而没有事先检查它是不是正确的类型时,就会发生这个异常。而在Kotlin中,检查和转换被组合成了一次操做:一旦检查过类型,不须要额外的转换(Java中还须要强制转换)就能直接引用属于这个类型的成员。
if (value is String) //检查类型 println(value.toUpperCase()) //调用该类型的方法
Kotlin工具也对跨语言项目提供了全面支持。它能够编译任意混合的Java和Kotlin源码,无论它们之间是怎样互相依赖的。IDE的特性也能跨语言工做,容许:
---恢复内容结束---