居說谷歌新認的干兒子kotlin極為受寵,隱隱有替代Java在 android平台老大位置的趨勢。kotlin有谷歌撐腰,加上自己的底子也厚,再之與Java無縫兼容,將來在流行的編程語言中占有一席之地是毫無疑問的事情。
我對於優勢突出的編程技術總會產生莫名的興趣,因此,在對konlin有了初步的了解以后就迫不及待躍躍欲試的想嘗試一下,於是找了一件之前一直想做的事情趁這個機會用kotlin實現一下,即滿足了自己的需求也體驗了一把使用kotlin的滋味。
這個需求挺簡單, 抓取某一個房地產網站每一天每個樓盤的成交價格數據並發送至我的郵箱。 程序實現的邏輯不復雜,總共一百多行代碼。我把在寫在這一百多行代碼的過程中體會到的kotlin 和Java的差異和大家分享一下, 通過對比側面的說明一下kotlin的優點
一
在Java中所有的代碼都必須寫在類里面,類是可運行程序的最小單元, 就算是最簡單的輸出hello world字符串, 也必須要聲明一個類。而在konlin中則沒有這種限制,可以直接新建一個文件,在文件的頭部聲明一個包,然后就可以直接編寫函數了,而不必像Java一樣必須要儀式性的聲明一個類
比Java簡潔的多,跟JavaScript比較相似
二
Kotlin有類型推斷功能, 不必像Java一樣在聲明變量前必須指定冗長的類型名稱。 圖中標注的val關鍵字表示變量一但被賦值后就不能被修改,跟其它語言中的常量含意相同。如果需要定義可以修改值的變量則可以var關鍵替代val關鍵字。 這種聲明變量的方式看似與JavaScript非常相似,但作用完全不同, JavaScript是動態類型語言, 聲明的變量除非到了運行期,否則無法確定類型,這也就意味着無法通過編譯器除錯。而kotlin的這種寫法則意味着語言具備類型推斷功能, 定義變量看似無法確定類型, 但是假如你想訪問變量類型中不存的成員時,則編譯時會報錯, 實質上它是把原本在變量前面的類型名稱給隱藏起來了,但作用不變, 這樣書寫起來會方便很多。
三
省略了new關鍵字, 實例化對象時直接調用構造函數就可以了
舊時Java的寫法
HttpGet get = new HttpGet(url);
kotlin的寫法
val get = HttpGet(url)
四
數據類的get/set方法被屬性訪問的方式取代。 假如一個Java編寫的類中的有getXXX和setXXX兩個方法, 那么在kotlin中使用這個Java類中不必再去寫getXXX和setXXX這樣的代碼, 直接通過obj.xxx和obj.xxx = "xxx"這樣取值和設置值就可以了,kotlin編譯器做了自動轉換。
五
Kotlin支持if表達式
這種寫法對簡化代碼和提高編碼效率意義重大。
六
支持data class, 而不必像在Java為了定義一個數據實體而寫一堆getXXX 和 setXXX方法。並且在傳參時可以指定參數名稱。 而在kotlin中聲明的數據類, 在Java中使用時會自動生成一堆getXXX和setXXX方法
因為實現這個程序的代碼量不多, 所以總結出來的kotlin語法特性並不完整, 但總體來說還是能表現出一些優於Java的特點, 之后關於使用kotlin的心德, 還是會持續更新的。 如果有同學迫不及待的想了解關於kotlin的詳細語法知識,那么可以去瀏覽kotlin的官網或者網友翻譯的中文文檔