要想了解一個(gè)新事物浦徊,將它與所熟悉的就實(shí)物做對(duì)比是最好不過的方式了馏予,下文為 Kotlin 官方網(wǎng)站的一篇文章,對(duì) Java 和 Kotlin 做了對(duì)比辑畦。我根據(jù)自己的理解添加了一點(diǎn)解釋吗蚌。原文對(duì)每一條都有鏈接讓你去深入了解,很好4砍觥蚯妇!
Java 有, Kotlin 沒有的:
- checked 異常(一個(gè)方法在聲明拋出異常后暂筝,使用它的方法必須使用 try 捕獲或者聲明拋出)
- 基本類型箩言,它們不是類
- 靜態(tài)方法,屬于類的方法
- 非私有 Feild(Java 的類包含數(shù)據(jù)和方法焕襟,數(shù)據(jù)被稱為 Feild陨收,可以直接在外部訪問非私有的Feild)
- 泛型里的通配符(類似這種的 Collection<? extends E> 或者這樣 List<? super String>)
Kotlin 有, Java 沒有的:
- lambda表達(dá)式 和 內(nèi)聯(lián)函數(shù)(能夠提高性能)
- 擴(kuò)展函數(shù)
- Null 安全(變量區(qū)分可Null 和 可不Null)
- 智能轉(zhuǎn)換
- String 模板(類似這樣的 println("hello $Name"))
- 屬性(準(zhǔn)確的說鸵赖,Java里面的類的數(shù)據(jù)叫 Feild)
- 基本構(gòu)造器(類似這樣的 class Persion(name: String) {} 這里的小括號(hào)是基本構(gòu)造器)
- 支持代理模式务漩,不需要寫多余的代碼(類似這樣的 class Proxy(impl: Base): Base by impl)
- 變量和屬性的類型推斷 (val a = 5, 可以推斷出 a 的類型是 Integer,并不是動(dòng)態(tài)類型)
- 支持單例模式 (類似這樣的 object Global {})
- 類型參數(shù)(類似 Java 的反仕省)
- 區(qū)間表達(dá)式 (類似這樣的 1..5 == [1, 2, 3, 4, 5])
- 操作符重載 (可以重新定義 +《恰- 等等)
- 伙伴對(duì)象 (Companion Object, 可以用來實(shí)現(xiàn)靜態(tài)變量,靜態(tài)方法)
- 數(shù)據(jù)類 (類似這樣 data class Persion(name: String) {} 就是在正常的類之前加了個(gè) data Kotlin 會(huì)給太生成一些方法)
- 區(qū)分了可變集合和不可變集合
- 協(xié)程 (不是說走就走的那個(gè)攜程)