記錄kotlin 和 java語法的一些對比,持續更新

本文不針對新手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最後一種寫法只適用與只有一個參數的監聽器中,多個參數還是使用第二種寫法

先到這



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章