Kotlin ↔ Java 学习对照表(含注释讲解)
| 分类 | Java 写法 | Kotlin 写法 | 差异与讲解 |
|---|---|---|---|
| 1. 变量声明 | java String name = "Tom"; int age = 18; | kotlin val name = "Tom" // 不可变<br>var age = 18 // 可变 | Kotlin 自动推断类型;val 相当于 Java 的 final,var 可变。 |
| 2. 函数定义 | java public int add(int a, int b){ return a + b; } | kotlin fun add(a: Int, b: Int): Int = a + b | Kotlin 函数更简洁,fun 关键字,类型写在变量后面。 |
| 3. 类与构造函数 | java public class User { String name; int age; public User(String n, int a){ name=n; age=a; } } | kotlin class User(val name: String, val age: Int) | Kotlin 主构造函数直接写在类名后面。 |
| 4. 数据类(Model) | java class User { private String name; private int age; // getter/setter/toString省略 } | kotlin data class User(val name: String, val age: Int) | Kotlin 的 data class 自动生成 toString()、equals()、hashCode()。 |
| 5. 空指针安全 | java String s = null; int len = s.length(); // NPE! | kotlin var s: String? = null<br>val len = s?.length | ? 表示可空类型,?. 是安全调用符。 |
| 6. if 表达式 | java int max; if(a>b){ max=a; }else{ max=b; } | kotlin val max = if (a > b) a else b | Kotlin 的 if 是表达式,有返回值。 |
| 7. 字符串模板 | java String msg = "Hello " + name; | kotlin val msg = "Hello $name" | Kotlin 用 $变量 插值,简洁明了。 |
| 8. when 分支 | java switch(x){ case 1: ...; break; default: ...; } | kotlin when(x){ 1 -> println("one") else -> println("other") } | when 是更灵活的 switch,支持任意类型匹配。 |
| 9. 集合遍历 | java for(String item : list){ System.out.println(item); } | kotlin for(item in list){ println(item) } | in 替代 :, 语法更直观。 |
| 10. Lambda 表达式 | java list.forEach(item -> System.out.println(item)); | kotlin list.forEach { println(it) } | Kotlin 原生支持函数式写法,it 是默认参数名。 |
| 11. 扩展函数 | ❌(Java 不支持) | kotlin fun String.lastChar() = this[this.length-1] | Kotlin 可为任意类添加新函数,不改动原类。 |
| 12. 默认参数 | java void greet(String name){ greet(name, 18); } void greet(String name,int age){...} | kotlin fun greet(name: String, age: Int = 18){...} | Kotlin 支持默认参数,函数重载更少。 |
| 13. 异步编程 | java new Thread(() -> doWork()).start(); | kotlin GlobalScope.launch { doWork() } | Kotlin 的协程 coroutine 更轻量,管理异步任务。 |
| 14. 单例写法 | java public class Config { private static final Config INSTANCE = new Config(); public static Config get(){return INSTANCE;} } | kotlin object Config { val version = "1.0" } | object 自动实现线程安全的单例。 |
| 15. try-with-resource | java try(FileReader r = new FileReader("a.txt")){...} | kotlin FileReader("a.txt").use { ... } | Kotlin 用 use 扩展函数自动关闭资源。 |
总结性理解
| 对比点 | Kotlin 的优势 |
|---|---|
| 语法简洁度 | 减少样板代码,专注逻辑本身 |
| 空安全性 | 编译期避免空指针 |
| 函数式支持 | Lambda、集合操作强大自然 |
| 可读性 | 类似脚本语言的流畅表达 |
| 互操作性 | 与 Java 100% 兼容,可混用 |
版权属于:不冷
本文链接:https://www.buleng.xyz/archives/246/
转载时须注明出处及本声明

