Kotlin 和 Java 都是目前比較流行的編程語言,它們在語法和使用方法上有一些區(qū)別。
1. 空安全
Java: String str = null; // 可以賦值為 null if(str != null){ System.out.println(str.length()); // 需要手動判斷非空 } Kotlin: var str: String? = null // 加一個 ? 表示可以為空 println(str?.length) // 使用 ? 判斷 str 不為空后再調(diào)用方法
2. 簡潔性
Java: public class Test { public static void main(String[] args) { List<String> list = new ArrayList<String>(); list.add("Java"); list.add("Kotlin"); list.add("Python"); for (int i = 0; i < list.size(); i++) { // 使用 for 循環(huán) String s = list.get(i); System.out.println(s); } } } Kotlin: fun main(args: Array<String>) { // 這里的< 和 >是 HTML 中的符號,表示尖括號 val list = listOf("Java", "Kotlin", "Python") // 直接創(chuàng)建不可變集合 for (s in list) { // 直接遍歷不需要下標(biāo) println(s) } }
3. 函數(shù)式編程
Java: public class Test { public static void main(String[] args) { List<Integer> list = new ArrayList<Integer>(); list.add(1); list.add(2); list.add(3); int sum = 0; for (int i = 0; i < list.size(); i++) { sum += list.get(i); } System.out.println(sum); } } Kotlin: fun main(args: Array<String>) { val list = listOf(1, 2, 3) val sum = list.reduce { acc, i -> acc + i } // 使用 reduce 方法,一句話搞定 println(sum) }
4. 擴展方法
Java: public class Test { public static void main(String[] args) { String str = " Java "; str = str.trim(); // 調(diào)用現(xiàn)有方法 System.out.println(str); } } Kotlin: fun main(args: Array<String>) { var str = " Java " str = str.trim() // 直接調(diào)用擴展方法 println(str) // 擴展方法的定義 fun String.trim(): String { return this.trim() // 使用 this 表示當(dāng)前對象 } }
Java 和 Kotlin 都有各自的優(yōu)缺點,但是 Kotlin 在一些細(xì)節(jié)處理上更加考慮周全,相信隨著時間的推移,越來越多的人會選擇 Kotlin。