Java?Kotlin?Kotlin!

祁博雅
2023-12-01
  • 简介

    • Kotlin 是 JetBrains 开发的,这是一家开发了一整套 IDEs 的公司,诸如 IntelliJ 和 ReSharper, 还有正在闪耀光芒的 Kotlin。这是一个务实而且简洁的编程语言,真正让人感觉身心愉悦的编程语言,而且效率非常高。
  • why I chose Kotlin
    • java互操性
      Kotlin 是 100% 与 Java 具备互操作性的。你可以使用 Kotlin 继续你的 Java 项目开发。所有你熟悉的 Java 框架仍然可用,任何框架,通吃!
    • 熟悉的语法
      Kotlin 不是诞生于学术界的怪异语言。其语法是 OOP 领域的任何开发者都熟悉的,可以或多或少的有一些了解。当然和 Java 还是有些不同的,例如重构后的构造函数以及使用 val 的变量声明等等。下面是一个基本的 Kotlin 示例代码:
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()
}

作者:王炜鑫:原文地址

 类似资料: