Kotlin和Java 学习对照表

2025-11-11T09:01:00

Kotlin ↔ Java 学习对照表(含注释讲解)

分类Java 写法Kotlin 写法差异与讲解
1. 变量声明java String name = "Tom"; int age = 18; kotlin val name = "Tom" // 不可变<br>var age = 18 // 可变 Kotlin 自动推断类型;val 相当于 Java 的 finalvar 可变。
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-resourcejava try(FileReader r = new FileReader("a.txt")){...} kotlin FileReader("a.txt").use { ... } Kotlin 用 use 扩展函数自动关闭资源。

总结性理解

对比点Kotlin 的优势
语法简洁度减少样板代码,专注逻辑本身
空安全性编译期避免空指针
函数式支持Lambda、集合操作强大自然
可读性类似脚本语言的流畅表达
互操作性与 Java 100% 兼容,可混用

当前页面是本站的「Baidu MIP」版。发表评论请点击:完整版 »