记录kotlin 和 java语法的一些对比

本文不针对新手Android直接入手kotlin的同学,希望可以对一直使用java做安卓想转konlin的同学有一丢丢帮助

最近开始使用kotlin些项目,用了差不多有两个多月了。差不多学个两三天就能基本上手开发项目,当然,在后续使用也是不断的查资料(ctrl + c)。现在做一些简单语法的对比,也算是学习kotlin的历程吧!

kotlin中的for循环for条件体中的语法较为简洁

 

for (i in 0..9) {

}
//集合的遍历
var list = ArrayList()
for (i in list.indices){
    var s = list[i]
}

对应的java语法的for循环

 

for (int i = 0; i < 9; i++) {

}
//集合的遍历
List 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最后一种写法只适用与只有一个参数的监听器中,多个参数还是使用第二种写法

先到这

 

 

你可能感兴趣的:(kotlin)