本文不針對新手Android直接入手kotlin的同學,希望可以對一直使用java做安卓想轉konlin的同學有一丟丟幫助
最近開始使用kotlin些項目,用了差不多有兩個多月了。差不多學個兩三天就能基本上手開發項目,當然,在後續使用也是不斷的查資料(ctrl + c)。現在做一些簡單語法的對比,也算是學習kotlin的歷程吧!
kotlin中的for循環for條件體中的語法較爲簡潔
for (i in 0..9) { } //集合的遍歷 var list = ArrayList<String>() for (i in list.indices){ var s = list[i] }
對應的java語法的for循環
for (int i = 0; i < 9; i++) { } //集合的遍歷 List<String> list = new ArrayList<>(); for (int i = 0; i < list.size(); i++) { String s = list.get(i); }kotlin中的when,剛開始以爲和java中的while差不多,實際上是java中的switch...case...語句
var a = 0 var b = "心情" when(a){ 0 -> b = "傷心" //簡單的處理 1 -> b = "開心" 2 -> b = "瘋狂" 3 -> { //複雜的處理 a ++ b = "憤怒" } }對應java中的swich...case...語句就不多說了
kotlin中的if語句基本和java中的用法一樣,其中有種簡寫方法還是有區別的,個人覺得可以替代java中的三目運算符,目前在kotlin中我沒發現三目運算符的語法。。。
var x = 0 var y = 1 var z = -1 z = if (x > y) x else if(y > x) y else -1 //取x,y中較大的值,並賦值於z(先到這吧,下班啦)
今天做一些監聽事件寫法上的對比
下面是封裝的一個獲取地理位置信息方法,有成功返回監聽,java中的使用如下
LocationUtil.getLocationDetails(getActivity(), new AMapLocationListener() { @Override public void onLocationChanged(AMapLocation aMapLocation) { //aMapLocation.. } });
下面是kotlin中幾種不同寫法代碼
LocationUtil.getLocationDetails(activity,object : AMapLocationListener{ override fun onLocationChanged(p0: AMapLocation?) { p0!!. } })
LocationUtil.getLocationDetails(activity) { p0 -> //activity.log(p0!!.toString()) p0!!. }
LocationUtil.getLocationDetails(activity) { it. }
上面三種寫法不同,作用相同,最後一個裏面的 it 就是前面的 p0,zz最後一種寫法只適用與只有一個參數的監聽器中,多個參數還是使用第二種寫法
先到這