简介
- Kotlin 是 JetBrains 开发的,这是一家开发了一整套 IDEs 的公司,诸如 IntelliJ 和 ReSharper, 还有正在闪耀光芒的 Kotlin。这是一个务实而且简洁的编程语言,真正让人感觉身心愉悦的编程语言,而且效率非常高。
- why I chose Kotlin
- java互操性
Kotlin 是 100% 与 Java 具备互操作性的。你可以使用 Kotlin 继续你的 Java 项目开发。所有你熟悉的 Java 框架仍然可用,任何框架,通吃! - 熟悉的语法
Kotlin 不是诞生于学术界的怪异语言。其语法是 OOP 领域的任何开发者都熟悉的,可以或多或少的有一些了解。当然和 Java 还是有些不同的,例如重构后的构造函数以及使用 val 的变量声明等等。下面是一个基本的 Kotlin 示例代码:
- java互操性
class Foo {
val b: String = "b" // val变量不可变
var i: Int = 0 // var变量可变
fun hello() {
val str = "Hello"
print("$str World")
}
fun sum(x: Int, y: Int): Int {
return x + y
}
fun maxOf(a: Float, b: Float) = if (a > b) a else b
}
- 字符串插值
这相当于是更智能,更具备可读性的 Java 的 String.format() 方法的 Kotlin 实现:
val x = 4
val y = 7
print("sum of $x and $y is ${x + y}") // sum of 4 and 7 is 11
- 类型推断
Kotlin 会自动的对变量的类型进行推断:
val a = "abc" // String类型
val b = 4 // Int类型
val c: Double = 0.7 // 显示声明类型
val d: List<String> = ArrayList() // 显示声明类型
- 智能类型转化
Kotlin 编译器会跟踪你的逻辑代码并在需要的时候进行自动的类型转换:
if (obj is String) {
print(obj.toUpperCase()) // obj被识别为String类型
}
- 更直观的相等性比较
道别 equals() ?!因为 == 操作符也可以用来比较结构的相等性:
val john1 = Person("John")
val john2 = Person("John")
john1 == john2 // true (结构相等)
john1 === john2 // false (对象/引用不相等)
- Ranges
传说中的可读性:
for (i in 1..100) { ... }
for (i in 0 until 100) { ... }
for (i in 2..10 step 2) { ... }
for (i in 10 downTo 1) { ... }
if (x in 1..10) { ... }
- 默认参数值
少些java式参数不同的相似方法吧!
fun build(title: String, width: Int = 800, height: Int = 600) {
Frame(title, width, height)
}
- When 表达式
switch替换成when,可读性+1:
when(x){
1 -> print("x is 1")
2 -> print("x is 2")
3, 4 -> print("x is 3 or 4")
in 5..10 -> print("x is 5, 6, 7, 8, 9, or 10")
else -> print("x is out of range")
}
- 支持表达式或者是语句,可以是有参数或者无参数
val res: Boolean = when {
obj == null -> false
obj is String -> true
else -> throw IllegalStateException()
}